一、修改前的准备工作
1、检查是否安装 SSH 服务:使用rpm qa | grep ssh
命令查看系统是否已安装 SSH 服务,如果未安装,可通过yum install y opensshserver
命令进行安装。
2、查看当前 SSH 端口:通过sudo cat /etc/ssh/sshd_config | grep Port
命令查看当前 SSH 配置文件中设置的端口号,默认情况下是 22 端口。

二、修改 SSH 配置文件
1、备份原配置文件:在进行修改之前,建议先备份一下原始的 SSH 配置文件,以便在出现问题时可以恢复,可以使用cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
命令进行备份。
2、编辑配置文件:使用文本编辑器(如 vi 或 nano)打开/etc/ssh/sshd_config
文件,找到#Port 22
这一行,将前面的#
号删除,然后将 22 修改为你想要设定的新端口号,3333,也可以在此行上方添加一行Port 3333
来增加一个新的端口号,但不建议同时保留多个端口号以免造成安全风险。
3、保存并关闭文件:完成修改后,保存文件并退出编辑器。
三、重启 SSH 服务
1、重启 SSH 服务:执行sudo systemctl restart sshd
命令重启 SSH 服务,使新的端口配置生效。
2、检查服务状态:使用sudo systemctl status sshd
命令检查 SSH 服务的状态,确保服务正常运行且监听在新设置的端口上。
四、防火墙配置(如果启用了防火墙)
1、添加新端口规则:如果你的服务器启用了防火墙,需要将新设置的 SSH 端口添加到防火墙的允许列表中,执行以下命令:

sudo firewallcmd permanent zone=public addport=3333/tcp
(假设新端口号为 3333)
sudo firewallcmd reload
。
2、确认端口已开放:再次执行firewallcmd listall
命令,查看防火墙规则中是否已包含新添加的 SSH 端口。
五、SELinux 配置(SELinux 处于启用状态)
1、查看 SELinux 状态:执行/usr/sbin/sestatus v
命令查看 SELinux 服务状态,如果状态为已开启,则需要进行下一步操作。
2、添加新端口到 SELinux:使用semanage port l | grep ssh
命令查看当前 ssh 服务的端口,如果没有刚刚添加的新端口,则执行以下命令向 SELinux 中添加该端口:

semanage port a t ssh_port_t p tcp 3333
(假设新端口号为 3333)。
3、重新加载 SELinux 配置:执行touch /.autorelabel
命令,然后重启系统,使 SELinux 的配置生效。
六、连接测试
1、使用新端口连接:在客户端使用 SSH 客户端连接到服务器时,需要在命令中指定新设置的 SSH 端口号,ssh user@server_ip p 3333
(假设新端口号为 3333)。
2、验证连接成功:如果能够成功连接到服务器,说明 SSH 端口修改成功;如果连接失败,请检查以上步骤是否正确执行,以及服务器和客户端之间的网络连接是否正常。
七、FAQs
1、Q:修改 SSH 端口后,原来的 22 端口还能使用吗?
A:如果只是修改了 SSH 配置文件中的端口号,并没有删除原来的 22 端口配置,那么原来的 22 端口仍然可以继续使用,但如果在修改过程中删除了 Port 22 这一行,并且没有正确配置防火墙和 SELinux,可能会导致无法通过 22 端口连接,建议在确认新端口可以正常使用后,再考虑是否删除原来的 22 端口配置。
2、Q:修改 SSH 端口后,连接时出现 “Connection refused” 错误怎么办?
A:出现 “Connection refused” 错误可能有以下几种原因及解决方法:
检查服务器上的 SSH 服务是否正在运行,可使用sudo systemctl status sshd
命令查看,如果服务未运行,执行sudo systemctl start sshd
命令启动服务。
确保防火墙已经允许了新设置的 SSH 端口通过,可使用firewallcmd listall
命令查看防火墙规则中是否包含新端口,如果没有,按照上述步骤重新添加端口规则并重启防火墙。
如果服务器启用了 SELinux,检查是否已将新端口添加到 SELinux 的策略中,使用semanage port l | grep ssh
命令查看,如果没有,按照上述步骤向 SELinux 中添加端口并重新加载 SELinux 配置。