本文以 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
命令重启实例,服务器默认远程端口修改完成。再次登录时使用新端口号登录即可。
8. 典型应用的常用端口
说明:部分运营商判断端口 25、135、139、444、445、5800、5900 等为高危端口,并默认屏蔽。即使你添加的安全组规则放行了这些端口,在受限地区仍无法访问。
端口列表
常用端口典型应用
参考
- https://help.aliyun.com/document_detail/51644.html