如何修改sshd和ssh的默认端口号?

如何在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