SSH服务器端口怎么改?

**重要警告

在更改 SSH 端口之前,请务必保持一个当前的 SSH 会话处于打开状态,不要退出! 这是你的“救命通道”,如果新端口配置错误(例如防火墙阻止),你可能会被锁在服务器外面,用这个保留的会话去修复问题。

步骤 1:修改 SSH 服务器配置

SSH 服务器的配置文件通常是/etc/ssh/sshd_config,你需要使用 root 权限来编辑它。

1、备份原配置文件(推荐)

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

2、编辑配置文件

使用你喜欢的文本编辑器,例如nanovim

    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:配置防火墙(极其重要!)

如果你服务器上开启了防火墙(如ufwfirewalld),你必须允许新的端口通过,否则连接会被拒绝。

如果使用 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

**如果使用 iptables

允许新的端口
sudo iptables -I INPUT -p tcp --dport 2222 -j ACCEPT
然后保存 iptables 规则(根据你的系统,命令可能不同)
sudo service iptables save
或者
sudo /sbin/iptables-save

**步骤 3:重启 SSH 服务

让新的配置生效。

sudo systemctl restart sshd
或者在某些系统上可能是
sudo systemctl restart ssh

使用以下命令检查服务状态,确保没有报错:

sudo systemctl status sshd

**步骤 4:测试新端口连接

在保持原有会话不退出的情况下,打开一个新的终端窗口,尝试用新端口连接到服务器。

使用-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

评论