# Linux下如何更改SSH端口号
## 前言
SSH(Secure Shell)是Linux系统中常用的远程管理协议,默认使用22端口。由于该端口广为人知,容易成为攻击目标。本文将详细介绍如何通过修改SSH端口号来提升系统安全性,涵盖配置修改、防火墙调整及SELinux设置等关键步骤。
---
## 一、为什么需要修改SSH端口?
### 1. 安全风险
- **暴力破解攻击**:22端口是默认目标,攻击者常通过自动化工具尝试破解。
- **减少扫描流量**:修改端口可降低服务器被随机扫描的概率。
### 2. 注意事项
- 避免使用常见端口(如80、443)。
- 确保新端口未被其他服务占用(可通过`netstat -tuln`或`ss -tuln`检查)。
---
## 二、修改SSH端口详细步骤
### 1. 备份配置文件
```bash
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
使用文本编辑器(如nano或vim)打开配置文件:
sudo nano /etc/ssh/sshd_config
找到以下行(若被注释则取消注释):
#Port 22
修改为(例如改为2222):
Port 2222
如需同时监听多个端口,可添加多行:
Port 22
Port 2222
根据系统防火墙工具选择对应命令:
sudo ufw allow 2222/tcp sudo ufw reload
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
sudo service iptables save # 保存规则
sudo ufw status # UFW
sudo firewall-cmd --list-ports # FirewallD
sudo iptables -L -n # iptables
若系统启用SELinux,需更新策略以允许新端口:
sudo semanage port -l | grep ssh
sudo semanage port -a -t ssh_port_t -p tcp 2222
sudo semanage port -l | grep ssh
sudo systemctl restart sshd # 或 sudo service ssh restart
保留当前会话,新开终端测试:
ssh -p 2222 username@server_ip
确认连接成功后,再关闭旧会话。
在配置文件中删除Port 22
并重启SSH服务。
sudo systemctl status sshd
journalctl -u sshd -f
ss -tuln | grep 2222
若出现权限问题,可临时禁用SELinux测试:
sudo setenforce 0
(生产环境不建议长期禁用)
禁用root登录:
在sshd_config
中添加:
PermitRootLogin no
密钥认证替代密码:
使用ssh-keygen
生成密钥对,并配置:
PasswordAuthentication no
Fail2Ban防护:
安装Fail2Ban自动封禁暴力破解IP:
sudo apt install fail2ban # Debian/Ubuntu
sudo yum install fail2ban # RHEL/CentOS
通过修改SSH默认端口,结合防火墙和SELinux的配置,可显著提升系统安全性。建议定期审查日志并更新安全策略,以应对不断变化的威胁环境。
注意:操作前请确保有其他访问途径(如控制台),避免配置错误导致无法连接。 “`
本文共约1200字,涵盖从基础配置到高级安全的完整流程,适合不同水平的Linux用户参考。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。