【介绍】
Linux服务器远程连接的SSH端口默认为22。很多机器人进行端口扫描、暴力破解就是从22开始。若您的密码还设置过于简单,那么可能中招。所以务必修改端口号。
【命令】
systemctl start sshd.service # 启动 systemctl stop sshd.service # 停止 systemctl restart sshd.service # 重启 systemctl status sshd.service # 状态 systemctl reload sshd.service # 重载
【常规】
参考:https://www.vultr.com/docs/changing-your-ssh-port-for-extra-security-on-centos-6-or-7
参考:https://blog.csdn.net/yanzi1225627/article/details/51470962
修改SSH端口号:
编辑 /etc/ssh/sshd_config :
# Port 22 Port 2048
更新防火墙设置:
firewall-cmd --zone=public --add-port=2048/tcp --permanent
如果需要删除:
firewall-cmd --zone=public --remove-port=2048/tcp --permanent
重载配置使之生效:
firewall-cmd --reload
查看已放行端口:
firewall-cmd --zone=public --list-ports
重启SSH服务使之生效:
service sshd restart
【特例:阿里云】
如果是阿里云,需要在安全组规则中同步设置。
参考:https://help.aliyun.com/document_detail/25471.html?spm=5176.2020520101.0.d0.60c04df5KklC9G
实证成功。
【特例:DigitalOcean.com】
如果是DigitalOcean.com,需要在 Firewall Cloud 中同步设置。
然鹅未遂。SELinux缘故?
参考:http://www.178linux.com/72697
参考:https://blog.csdn.net/woailyoo0000/article/details/79782986
修改SSH端口号:
编辑 /etc/ssh/sshd_config :
# Port 22 Port 2048
载入新的SSH设置:
systemctl restart sshd.service
报错;
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
原因是selinux启用了,并且selinux允许的sshd-port跟设置的port不匹配造成的。
那么先关闭selinux,然后设置SSH端口放行,最后进行为sshd服务添加selinux放行端口。
查看防火墙配置(CentOS7):
systemctl status firewalld
输出:
● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
没有设置防火墙策略,那就不是防火墙的因素。
关闭selinux,尝试重启sshd服务:
查看selinux状态:
getenforce
输出:
Enforcing
关闭selinux:
setenforce 0
查看selinux状态:
getenforce
输出:
Permissive
重试重启SSH:
systemctl restart sshd
重启成功。
使用新端口SSH登入成功,
重新开启selinux并修改selinux端口标签:
启用selinux:
setenforce 1
查看selinux状态:
getenforce
输出:
Enforcing
查看selinux中sshd服务放行的端口号:
semanage port -l | grep ssh
输出:
ssh_port_t tcp 22
添加自定义sshd服务端口至selinux中:
semanage port -a -t ssh_port_t -p tcp 2048
查看selinux中sshd服务放行的端口号:
semanage port -l | grep ssh
输出:
ssh_port_t tcp 2048, 22
参考:https://www.v2ex.com/t/193637
参考:https://www.howtoing.com/how-to-troubleshoot-digitalocean-firewalls/
参考:https://www.digitalocean.com/community/questions/how-to-change-ssh-port-and-firewall-rule
参考:https://www.digitalocean.com/community/questions/custom-ssh-port-blocked-by-do
【参考】