前言 最近看到黑客扫描网段获取ip之后暴力破解密码造成信息和经济损失的事,就想到自己的树莓派和服务器也是直接暴露在外网,平时输错密码也是常有的事情,也没对密码进行什么限制.这样想想也是有些后怕,害怕密码被通过穷举破解的方法破解.于是去查询了一些关于SSH的安全设置.

更改SSH默认端口 大多数恶意扫描都是对默认端口进行扫描 改变默认端口能减少很大的风险

vim /etc/ssh/sshd_config
-----------------------------------
Port 22 # 改为其他端口
关闭ssh密码登录
vim /etc/ssh/sshd_config
-----------------------------------
#PasswordAuthentication yes
#取消密码认证的注释 将yes改为no
启用RSA公钥验证
vim /etc/ssh/sshd_config
----------------------------------
#PubkeyAuthentication yes
#取消注释
#centos 服务器的ssh设置中可能还有
#RSAAuthentication yes 
#取消注释
AuthorizedKeysFile    .ssh/authorized_keys #路径改为生成的连接主机的公钥
禁用空密码账户登录
# 禁止空密码账户登入(默认禁止)
PermitEmptyPasswords no

完成更改 更改完成后

systemctl restart sshd.service #重启ssh服务

如果你的服务器有进行防火墙的配置

ufw allow 更改端口/tcp

#或者

firewall-cmd --zone=public --add-port=端口/tcp --permanent
firewall-cmd --complete-reload #重新载入防火墙配置

另提一句,如果像是阿里云的服务器,还需要在它的安全组中添加开放的端口

客户端配置 更换了SSH的默认端口后,连接SSH时加上端口参数即可:

ssh -p 端口 example.com

也可以编辑~/.ssh/config文件,在其中加上Port参数,这样在连接SSH时,可以继续使用更换端口前的命令.

~/.ssh/config
--------------------
Host example.com
    Port 端口

优点 配置简单,修改单行配置并重启服务即可 有效减少各种针对SSH的扫描 缺点 使连接 SSH 变得略微麻烦; 有些时候,我们需要保持 SSH 监听在 22 端口上,那么这种方法就不适用了。xxxxxxxxxx deploy:   type: git   repo:       server: ssh://username@ip:port/path/to/remote/gityml