永远在修改配置之前先开放防火墙新端口,并且不要关闭当前的 SSH 连接,直到测试新端口连接成功为止。
第 1 步:先开放新端口(防火墙)
在修改配置之前,先在防火墙上放行新端口,否则重启 SSH 后你会被立即断开。
# 如果使用 UFW
sudo ufw allow 2222/tcp
# 如果使用 firewalld
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload第 2 步:修改 SSH 配置文件
sudo vi /etc/ssh/sshd_config添加如下配置,将ssh端口设置为2222
Port 2222⚠️ 如果文件里有多行
Port,只保留一个,其他的注释掉或删除。
第 3 步:重启 SSH 服务
bash
sudo systemctl restart sshd或
bash
sudo service ssh restart第 4 步:测试新端口(千万不要关闭当前 SSH 窗口)
保持当前连接不要断开,这作为“救命通道”。
另外打开一个新终端,用新端口尝试连接:
bash
ssh -p 2222 用户名@服务器IP如果新连接成功,说明一切正常,可以安全退出旧连接。
如果新连接失败,立即用旧窗口把配置改回
Port 22并重启 SSH:bash
sudo vi /etc/ssh/sshd_config # 改回 Port 22 sudo systemctl restart sshd
第 5 步:修改防火墙,关闭旧端口(可选)
确认新端口正常工作后,可以移除旧端口的防火墙规则:
bash
# UFW 删除旧规则
sudo ufw delete allow 22/tcp
# 或查看规则编号后删除
sudo ufw status numbered
sudo ufw delete 1🛡️ 额外安全建议
1. 禁止 root 直接登录(强烈推荐)
在 /etc/ssh/sshd_config 中设置:
bash
PermitRootLogin no2. 禁用密码登录,改用密钥认证(更安全)
bash
PasswordAuthentication no
PubkeyAuthentication yes⚠️ 操作前务必确认你已配置好 SSH 公钥,否则会永远无法登录!
3. 修改后完整配置示例
bash
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers 你的用户名