CentOS - 增加新的SSH远程访问端口教程(附:防火墙端口转发到22端口)
公司的服务器由于网络安全问题,22 端口不对外开放,因此外网无法通过 SSH 连接服务器。但由于其他端口没有限制,因此考虑通过其他端口进行 SSH 连接。有两种方案可以实现这个需求,下面分别介绍。
(2)找到“#Port 22”,将前面的 # 号注释去掉,然后在下面增加一行 Port 10086(表示新增一个 10086 端口),然后保存退出。
(2)接着执行如下命令,给 SSH 添加 10086 端口:
(3)完成后再次查看 ssh 使用的端口,可以发现 10086 端口已经添加:
(2)接着执行如下命令添加该端口:
(3)然后执行如下命令重新加载防火墙策略:
(4)最后再次查看下 10086 端口是否被开启,yes 表示开启:
(2)然后执行如下命令重新载入配置:
方案一:增加一个 SSH 服务端口
1,修改 SSH 配置文件
(1)首先执行如下命令编辑 SSH 配置文件:vi /etc/ssh/sshd_config
(2)找到“#Port 22”,将前面的 # 号注释去掉,然后在下面增加一行 Port 10086(表示新增一个 10086 端口),然后保存退出。
补充说明:
- 这里我不是修改端口,而是保留 22 端口的基础上新增一个端口,是为了保证后面内网仍然能通过 22 端口连接。
- 新增端口时候最好挑 10000~65535 之间的端口号,10000 以下容易被系统或一些特殊软件占用。

2,配置 SELinux
注意:如果服务器已经关闭了 SELinux,可以忽略这一步。
(1)执行如下命令,查看 SELinux 开放给 ssh 使用的端口,可以看到目前只给 SSH 开放 22 端口:
semanage port -l|grep ssh

(2)接着执行如下命令,给 SSH 添加 10086 端口:
semanage port -a -t ssh_port_t -p tcp 10086
(3)完成后再次查看 ssh 使用的端口,可以发现 10086 端口已经添加:

3,配置防火墙
注意:如果服务器已经关闭了防火墙,可以忽略这一步。
(1)执行如下命令查看防火墙是否开启了 10086 端口,返回 no 表示没有开放 10086 端口:
firewall-cmd --permanent --query-port=10086/tcp

(2)接着执行如下命令添加该端口:
firewall-cmd --permanent --add-port=10086/tcp
(3)然后执行如下命令重新加载防火墙策略:
firewall-cmd --reload
(4)最后再次查看下 10086 端口是否被开启,yes 表示开启:

4,重启相关服务
依次执行如下命令重启 SSH 服务和防火墙:systemctl restart sshd systemctl restart firewalld.service
5,连接测试
最后我们尝试通过 10086 端口登录 SSH,如果成功,说明新增的 10086 已经完全可以使用了:
ssh -l root 192.168.60.133 -p 10086
方案二:通过防火墙进行端口转发
1,端口转发介绍
- 端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定 ip 的话就默认为本机。
- 使用端口转发的好处是,我们不需要修改 SSH 配置增加一个额外的端口,只需要设置转发规则后就可以从一个指定端口转发到 22 端口上。
2,转发设置
(1)首先执行如下命令,作用是将 10086 端口的流量转发至 22 端口:
firewall-cmd --permanent --add-forward-port=port=10086:proto=tcp:toport=22
(2)然后执行如下命令重新载入配置:
firewall-cmd --reload
3,连接测试
最后我们尝试通过 10086 端口登录 SSH,如果成功,说明新增的 10086 已经完全可以使用了:
ssh -l root 192.168.60.133 -p 10086