如何在Linux系统中修改sshd和ssh的默认端口号?
SSH(Secure Shell)是Linux系统中最常用的远程管理工具之一,默认使用端口22进行通信。为了提高安全性,避免自动化攻击和扫描行为,许多系统管理员会选择修改SSH服务的默认端口号。本文将从配置文件修改、防火墙设置、连接方式调整以及安全模块适配等方面,深入讲解如何正确修改SSH的默认端口。
1. 修改SSH服务器端口配置
要修改SSH服务监听的端口号,需编辑其配置文件 /etc/ssh/sshd_config。请按照以下步骤操作:
使用文本编辑器打开配置文件:
sudo vi /etc/ssh/sshd_config
找到如下行并取消注释(如果被注释),然后修改端口号为期望值(例如 2222):
#Port 22 → Port 2222
保存并退出编辑器。重启SSH服务以应用更改:
sudo systemctl restart sshd
2. 配置防火墙放行新端口
修改端口后,必须确保防火墙允许新端口通过。以下是不同系统下的配置方法:
系统类型命令示例CentOS/RHEL 7+/Firewalldsudo firewall-cmd --permanent --add-port=2222/tcpsudo firewall-cmd --reloadUbuntu/Debian UFWsudo ufw allow 2222/tcpIptablessudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
3. 客户端连接时指定非默认端口
在客户端使用 ssh 命令连接时,可通过 -p 参数指定目标主机使用的端口号:
ssh username@remote_host -p 2222
也可以在本地用户目录下配置 ~/.ssh/config 文件,实现自动识别端口:
Host myserver
HostName remote_host
User username
Port 2222
4. SELinux 或 AppArmor 的适配设置
某些Linux发行版启用了SELinux或AppArmor等安全模块,它们可能会阻止SSH服务绑定到非标准端口。
SELinux 环境下添加端口权限:
sudo semanage port -a -t ssh_port_t -p tcp 2222
AppArmor 环境下可能需要手动编辑配置文件(如 /etc/apparmor.d/usr.sbin.sshd),添加允许的新端口。
5. 验证与测试
完成上述所有步骤后,建议执行以下验证操作:
检查 sshd 是否正在监听新端口:
sudo ss -tuln | grep 2222
尝试从另一台机器使用新端口连接:
ssh username@your_server_ip -p 2222
查看日志确认无异常:
sudo journalctl -u sshd