在更改 SSH 端口之前,请务必保持一个当前的 SSH 会话处于打开状态,不要退出! 这是你的“救命通道”,如果新端口配置错误(例如防火墙阻止),你可能会被锁在服务器外面,用这个保留的会话去修复问题。
步骤 1:修改 SSH 服务器配置
SSH 服务器的配置文件通常是/etc/ssh/sshd_config
,你需要使用 root 权限来编辑它。
1、备份原配置文件(推荐)
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2、编辑配置文件
使用你喜欢的文本编辑器,例如nano
或vim
。
sudo nano /etc/ssh/sshd_config
3、找到并修改端口行
在文件中找到#Port 22
这一行。
- 开头的#
表示这是注释,该配置未生效。
22
是默认端口。
你有两种修改方式:
方式一(推荐): 保留 22 端口,并新增一个端口。
Port 22 Port 2222
这样做的好处是,在测试新端口完全可用之前,你仍然可以通过默认的 22 端口连接。
方式二: 直接修改为新的端口。
删除#
,并将22
改为你想要的端口号(2222)。
Port 2222
4、保存并退出
在nano
编辑器中,按Ctrl + X
,然后按Y
确认,最后按Enter
保存。
步骤 2:配置防火墙(极其重要!)
如果你服务器上开启了防火墙(如ufw
或firewalld
),你必须允许新的端口通过,否则连接会被拒绝。
如果使用 UFW(常见于 Ubuntu/Debian)
允许新的 SSH 端口,2222 sudo ufw allow 2222 如果你选择了方式二(只使用新端口),记得要删除旧规则 sudo ufw delete allow 22
如果使用 FirewallD(常见于 CentOS/RHEL/Fedora)
将新的端口(2222)添加到 ssh 服务区域 sudo firewall-cmd --permanent --add-port=2222/tcp 重新加载防火墙 sudo firewall-cmd --reload 如果你选择了方式二,记得移除旧端口 sudo firewall-cmd --permanent --remove-service=ssh sudo firewall-cmd --reload
允许新的端口 sudo iptables -I INPUT -p tcp --dport 2222 -j ACCEPT 然后保存 iptables 规则(根据你的系统,命令可能不同) sudo service iptables save 或者 sudo /sbin/iptables-save
让新的配置生效。
sudo systemctl restart sshd 或者在某些系统上可能是 sudo systemctl restart ssh
使用以下命令检查服务状态,确保没有报错:
sudo systemctl status sshd
在保持原有会话不退出的情况下,打开一个新的终端窗口,尝试用新端口连接到服务器。
使用-p
参数指定端口:
ssh username@your_server_ip -p 2222
- 如果连接成功,说明新端口配置正确。
- 如果连接失败,请检查:
- 防火墙规则是否正确。
- SSH 配置文件中是否有拼写错误。
- 是否执行了重启 SSH 服务的命令。
步骤 5:禁用旧端口(可选但推荐)
在确认新端口工作完全正常后,为了安全,你应该禁用旧的 22 端口。
1、 再次编辑/etc/ssh/sshd_config
文件,注释掉或删除Port 22
那一行,只保留新端口。
#Port 22 Port 2222
2、 在防火墙中拒绝 22 端口的访问(如果你在步骤 2 中还没做的话)。
sudo ufw delete allow 22
3、 再次重启 SSH 服务。
sudo systemctl restart sshd
4、 再次测试,旧端口应该无法连接,而新端口可以。
1、端口号选择:
- 不要使用 0-1023(知名端口)。
- 避免使用像 2222、22222 这样过于常见的替代端口。
- 选择一个 1024 到 65535 之间不太常见的数字。
2、SELinux(仅限 CentOS/RHEL):
如果你的系统启用了 SELinux,默认只允许ssh_port_t
类型的端口,你需要告诉 SELinux 允许新的端口。
sudo semanage port -a -t ssh_port_t -p tcp 2222
3、云服务商安全组:
如果你使用的是 AWS、Google Cloud、阿里云等云服务器,你还需要在它们的控制台(安全组)中添加入站规则,允许你的新 SSH 端口。
4、客户端配置:
为了避免每次连接都输入-p
参数,你可以在客户端的~/.ssh/config
文件中为这个服务器配置别名。
Host myvps HostName your_server_ip User username Port 2222
之后就可以直接用ssh myvps
连接了。
完成以上所有步骤后,你就成功更改了 SSH 服务器的端口,并提升了服务器的安全性。
文章摘自:https://idc.huochengrm.cn/fwq/17476.html
评论