之前有看到关于服务器安全的 这篇文章 。于是想尝试更改下ssh登录端口,可谓是历尽千辛万苦。。网上的方法不是过时就是无效,最后终于自己摸索出来。
修改sshd_config文件
注意是sshd_config , 网上大部分是ssh.config。 我这里直接使用的WinSCP工具连接服务器修改。 没有用指令
vi /etc/ssh/sshd_config
找到 #Port 22 。 去掉前面的#注释,在下一行添加:Port 你认为合适的端口号
如 Port 10086
注意不要删除 22 端口,为防止修改后新端口无法访问,造成无法用 ssh 连接服务器。
保存修改后的 sshd_config 文件,并重启 sshd 服务。
systemctl restart sshd
安装 semanage 工具 :
$ yum provides semanage
$ yum -y install policycoreutils-python
为 ssh 打开 2048 端口:
# 为 ssh 添加新的允许端口
$ semanage port -a -t ssh_port_t -p tcp 10086
# 查看当前 SELinux 允许的端口, 应该会显示你 指定端口+22
$ semanage port -l | grep ssh
ssh_port_t tcp 10086, 22
修改selinux:
vim /etc/selinux/config
找到:
SELINUX=disabled
修改成:
SELINUX= enforcing
重启重启 ssh 服务
PS selinux给SSH开放端口
配置防火墙 firewalld
$ systemctl restart sshd
$ systemctl enable firewalld
$ systemctl start firewalld
$ systemctl status firewalld
应该会显示:
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 二 2017-12-02 11:12:59 CST; 2day 15h ago
Main PID: 10379 (firewalld)
CGroup: /system.slice/firewalld.service
└─10379 /usr/bin/python -Es /usr/sbin/firewalld –nofork –nopid
$ firewall-cmd –state
running
查看防火墙当前「默认」和「激活」zone(区域):
$ firewall-cmd --set-default-zone=public
$ firewall-cmd --zone=public --add-interface=eth0
success
$ firewall-cmd --zone=public --add-interface=eth1
success
为 public zone 永久开放 2048/TCP 端口
# 以防新端口不生效,先把 22 端口暴露
$ firewall-cmd --permanent --zone=public --add-port=22/tcp
$ firewall-cmd --permanent --zone=public --add-port=10086/tcp
success
# 重载防火墙
$ firewall-cmd --reload
# 查看暴露端口规则
$ firewall-cmd --permanent --list-port
443/tcp 80/tcp 22/tcp 10086/tcp
$ firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client ssh
ports: 443/tcp 80/tcp 22/tcp 10086/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
退出 ssh 后,尝试连接新端口
$ ssh -p 10086 rootlocalhost
若连接成功。则可以进行收尾工作。如果报错,原因有很多。若显示没有这个Rout,需要Ping你的服务器是否联通。若显示其它错误,则配置有问题,请特别注意版本问题。
禁用 22 端口
$ vi /etc/ssh/sshd_config
$ systemctl restart sshd
$ ss -tnlp | grep ssh #检查ssh 监听的端口,没有 22 证明修改成功
防火墙移除 22 端口
$ firewall-cmd --permanent --zone=public --remove-port=22/tcp
success
$ firewall-cmd --reload
$ firewall-cmd --permanent --list-port
443/tcp 80/tcp 2048/tcp
参考:
https://blog.csdn.net/mrqiang9001/article/details/78308830
https://sebastianblade.com/how-to-modify-ssh-port-in-centos7/