灵魂拷问,我应该更改 SSH 端口吗?

偶尔我会在网上看到有关 SSH 端口更改的讨论。很多人说应该修改端口,这会挡掉很多暴力破解的人。而反对派则认为修改端口不但没有提高安全性(因为可以通过端口扫描检测到),反而还有可能让攻击者对你更有兴趣。那么到底修改还是不修改就看你自己喽。

整体流程

  1. 修改ssh配置文件,添加新的端口号
  2. 让防火墙允许新的端口号通过
  3. 使用新端口登录测试
  4. 修改ssh配置文件删掉旧端口号(22)
  5. 让防火墙禁用旧端口号(22)

我采取了一个看上去很繁琐的步骤,但这是为了防止你注销并因配置失败而无法再次登录。

现在让我们来看看设置。本文当前端口(旧端口)为22,修改后的端口(新端口)为8822。

修改ssh配置文件,添加新的端口号

首先更改 SSH 设置。以下命令使用 vim 进行编辑,你也可以使用你喜欢的编辑器。

$ sudo vim /etc/ssh/sshd_config

修改成以下的样子。减号表示删除行,加号表示添加行。

- #Port 22
+ Port 22
+ Port 8822

sshd_config修改完成以后用下面的命令重启sshd服务。

$ sudo systemctl restart sshd

让防火墙允许新的端口号通过

由于有防火墙的存在,所以使用以下命令开放这个新端口。

$ sudo ufw allow 8822/tcp
$ sudo ufw reload

使用新端口登录测试

用新端口进行登录测试确保新端口已经可用。如果你无法使用新端口登录,请查看ssh设置或防火墙设置。

修改ssh配置文件删掉旧端口号(22)

SSH设置

同样的,继续删掉旧端口的设置。

$ sudo vim /etc/ssh/sshd_config

同样的,减号表示删除行,加号表示添加行。

- Port 22
+ #Port 22

sshd_config设置完成后重启sshd服务。

$ sudo systemctl restart sshd

让防火墙禁用旧端口号(22)

首先确认一下当前防火墙状态

$ sudo ufw status

你会看到

至                          动作          来自
-                          --          --
22                         ALLOW       Anywhere  
8822/tcp                   ALLOW       Anywhere  
22 (v6)                    ALLOW       Anywhere (v6)   
8822/tcp (v6)              ALLOW       Anywhere (v6)

可以看到新旧规则都存在,删掉旧的!

$ sudo ufw delete allow 22/tcp
$ sudo ufw reload

这样就完成端口的修改了。

当然,就像标题写的那样,如果你希望共用多个端口,那么你也可以保留旧端口或者开启多个新的端口。

最后

在关闭旧端口之前一定要确保你可以使用新端口登录。如果你不能访问物理服务器的话,不能登录ssh意味着你将失去对服务器的控制,千万要谨慎。

希望这篇文章对你有用,祝好运。

Last modification:October 25, 2021
If you think my article is useful to you, please feel free to appreciate