包括:
修改SSH端口
使用密钥登陆SSH
SELinux
Firewalld
vi /etc/ssh/sshd_config
将
#Port 22
改为
Port 22
Port 666 //自己定义
重要!!如果你的SELinux及Firewalld都关闭或已经开放了666端口,可以不再添加22,否则请暂时保留,等新的端口确认可以成功SSH,再回来注释掉22端口!
重启ssh服务
systemctl restart sshd
此时你可以尝试用新端口SSH
ssh -p 666 [email protected]
如果你成功了恭喜!如果没有请继续配置SELinux以及Firewalld
查看SELinux当前状态
getenforce
若是返回enforcing
或permissive
则是开启,若是返回disabled
则是关闭状态。如果是关闭状态,就不用配置了请跳过直接看Firewalld添加666端口章节,如果想关闭SELinux或者更多关于SELinux用法见SELinux章节。
需要用到SELinux管理配置工具semanage
来修改ssh可访问的端口。
安装semanage
yum -y install policycoreutils-python
查看当前SElinux允许的ssh端口
semanage port -l | grep ssh
返回
ssh_port_t tcp 22
为ssh打开666端口
semanage port -a -t ssh_port_t -p tcp 666
再次查看
semanage port -l | grep ssh
返回
ssh_port_t tcp 666, 22
查看firewalld当前状态
systemctl status firewalld
返回结果中包括active (running)
说明正在运行,若想直接关闭掉Firewalld或者更多关于Firewalld用法见Firewalld章节。
查看网络接口使用的区域(可跳过)
firewall-cmd --get-active-zones
返回
public
interfaces: enp0s3
查看public区域的所有配置(可跳过)
firewall-cmd --zone=public --list-all
返回
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: ssh dhcpv6-client
ports: 20/tcp 21/tcp 22/tcp 80/tcp 8888/tcp 39000-40000/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
开放666端口
firewall-cmd --permanent --zone=public --add-port=666/tcp
重启防火墙
firewall-cmd --reload
查看开放的端口
firewall-cmd --permanent --list-port
返回
20/tcp 21/tcp 22/tcp 80/tcp 8888/tcp 39000-40000/tcp 666/tcp
重启ssh服务
systemctl restart sshd
本地尝试重新SSH
ssh -p 666 [email protected]
如果成功,可以继续,禁用掉22端口
修改ssh配置文件
vi /etc/ssh/sshd_config
改为
#Port 22
Port 666
防火墙移除 22 端口
firewall-cmd --permanent --zone=public --remove-port=22/tcp
firewall-cmd --reload
firewall-cmd --permanent --list-port
返回
20/tcp 21/tcp 22/tcp 80/tcp 8888/tcp 39000-40000/tcp 666/tcp
重启ssh服务
systemctl restart sshd
再次从新测试
ssh -p 666 [email protected]
ssh -p 22 [email protected]
详见
本地Windows: 使用SSH密匙认证登录VPS
本地Ubuntu: Ubuntu SSH密钥远程登陆VPS(CentOS)以及多SSH-KEY管理
编辑配置文件
vi /etc/sysconfig/selinux
修改如下内容
SELINUX=disabled
#SELINUXTYPE=targeted //加#注释
重启生效
开启
systemctl enable firewalld.service
systemctl disable firewalld.service
关闭
systemctl stop firewalld.service
systemctl disable firewalld.service