本文以 CentOS 7 为例说明如何修改 Linux 服务器默认 SSH 端口。

SSH 是 Linux 上非常重要的一个安全性服务,网上有许多攻击都是来自扫描 SSH 默认的22端口并使用密码字典进行暴力破解,将默认 SSH 端口更改能过滤掉大部分暴力破解访问。

1. 登录服务器

登录自己的阿里云Linux实例,具体操作,请参见连接Linux实例。

2. 备份SSH配置文件

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

3. 修改SSH配置文件

  • 3.1 运行 vim /etc/ssh/sshd_config
  • 3.2 在键盘上按 I 键,进入编辑状态。
  • 3.3 在键盘上按 / 键,查找 ‘Port 22’ ,如 Port 22 被注释,删掉前面的 # 号。
  • 3.4 在 Port 22 下方输入 Port 1022。(说明:端口号请自行定义,不要直接修改 22 端口,先添加需要的默认远程端口。之所以先设置成两个端口,测试成功后再关闭一个端口,是为了在修改配置文件及网络调试过程中,万一新端口无法连接,还能通过22端口进行登录调试。)
  • 3.5 在键盘上按 Esc 键,输入 :wq 后退出编辑状态。

4. 重启 SSH

运行以下命令重启:

systemctl restart sshd

如果没有systemctl的话可以执行:

/etc/init.d/sshd restart 或 /etc/init.d/ssh restart

5. 配置防火墙

  • 5.1 CentOS 7 以前版本
    开启默认防火墙 iptables 时,应注意 iptables 默认不拦截访问,需要你添加SSH新端口规则,执行命令:iptables -A INPUT -p tcp --dport 1022 -j ACCEPT 配置防火墙。然后执行命令 service iptables restart 重启防火墙。
  • 5.2 CentOS 7 以后版本
    默认安装的是 Firewalld。如果你已经启用 firewalld.service,需要运行命令:firewall-cmd --add-port=1022/tcp --permanent 放行 TCP 1022 端口。返回结果为 success 即表示已经放行 TCP 1022 端口。

6. 阿里云服务器添加安全组规则

为该实例配置安全组规则,允许新配置的远程端口(上面的例子端口是:1022)进行连接,也就是云服务器一定要在安全组规则里将新端口(1022)添加到“入方向”的允许规则。具体操作,请参见添加安全组规则

7. 测试SSH新端口是否可以连接

  • 7.1 在终端输入命令:ssh -p 1022 root@yousite.com,输入密码,测试是否成功连接。
  • 7.2 使用 1022 端口连接成功后。运行 vim /etc/ssh/sshd_config 命令删除 Port 22 端口。
  • 7.3 运行 systemctl restart sshd 命令重启实例,服务器默认远程端口修改完成。再次登录时使用新端口号登录即可。

典型应用的常用端口

说明:部分运营商判断端口25、135、139、444、445、5800、5900等为高危端口,并默认屏蔽。即使你添加的安全组规则放行了这些端口,在受限地区仍无法访问。

端口列表

aliyun-ssh-1

常用端口典型应用

aliyun-ssh-2

参考

https://help.aliyun.com/document_detail/51644.html