1、背景
在客户现场,由于安全限制,在内网的交换机中配置的某些限制,不允许使用22端口作为远程访问服务器的端口,此时就需要更改远程访问的端口。
2、前提
在修改默认的远程访问端口22时,可以需要在Linux服务器中支持以下几个命令
2.1、SSH服务
首先你需要远程访问服务器,那么你的服务器系统中就必须有SSH服务,否则将会无法远程访问,一般情况下在安装操作系统时都会安装,除非你自己拒绝安装,那么现在想远程访问,那么就比较麻烦了。
可以使用如下命令检查ssh服务是否存在
[root@localhost ssh]# rpm -aq | grep ssh
2.2、semanage命令
semanage命令主要用户管理SELinux的策略
可以使用如下命令检查semanage命令是否存在
[root@localhost ssh]# rpm -qa | grep semanage
如果以上没问题的话,那么就可以开始下面的操作了
3、操作流程
3.1、配置防火墙安全策略
默认情况下22端口是可以从防火墙出去的,所以不需要我们进行配置,但是现在我们更换了远程访问端口,所以需要在防火墙中将其端口对固定的主机开放,以便于远程访问。
3.3.1、firewall防火墙配置
可以使用以下命令将其端口对固定的主机开放
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.8.220" port port="20002" protocol="tcp" accept"
重启防火墙
[root@localhost ssh]# systemctl restart firewalld
查看已经配置的白名单
[root@localhost ssh]# firewall-cmd --list-all
3.2、更换端口
ssh服务配置文件所在的位置是 /etc/sshd/sshd_config 配置文件中有个Port的关键字,端口修改主要针对的就是这个关键字(Port),具体如下
[root@localhost ssh]# vim sshd_config
3.3、修改SELinux安全策略
使用netstat 命令查看
[root@localhost ssh]# netstat -antulp | grep ssh
可以看出此时并没有我们添加的新的远程访问端口,那是因为我们没有在SELinux中进行配置,所以不会有,此时就需要使用到semanage命令了。
3.1、查看
[root@localhost ssh]# semanage port -l | grep ssh
3.2、添加策略
可以看出SELinux中只有22端口,没有我们在sshd_config中添加的新端口,此时需要进行手动添加
[root@localhost ssh]# semanage port -a -t ssh_port_t -p tcp 20002
3.3、再次查看
[root@localhost ssh]# semanage port -l | grep ssh
3.4、重启SSH服务
[root@localhost ssh]# systemctl restart sshd.service
3.5、查看
查看是否SSH服务是否存于启动状态
[root@localhost ssh]# systemctl status sshd.service
3.5、netstat 命令查看
再此使用 netstat 命令查看是否有新添加的端口
[root@localhost ssh]# netstat -antulp | grep ssh
4、验证
在加入白名单的主机上远程连接服务器(用新端口),看是否可以访问通,任何一款远程连接工具都可以
可以看出,已经可以远程访问服务器
5、问题
5.1、关于sshd_config
在修改sshd_config文件时,一定不可以将UseDNS设置为no,需要保持默认不变
5.2、报错没有权限
此时是因为你没有将新的端口添加到SELinux安全策略中。