本文最后更新于 2020年4月14日 请注意相关内容可能已过时
总所周知,服务器的安全是重中之重,而在网络上每天都有无数的机器在尝试爆破与弱口令登录。而一旦被爆破登录,往往机器会沦为黑客的免费肉鸡,更有甚者导致服务器里面的数据完全泄漏,损失惨重。
解决这个问题的方法有很多种,包括修改SSH端口,fail2ban等,这里介绍其中一种,就是开启服务器的密匙验证,同时禁用密码登录。
-
首先需要用到的工具
首先以root用户登录vps,如果你只能以非root用户登录,可以输入
sudo -i
切换成root用户。
当然如果你不需要以root用户生成密匙,你可以无视上面的,用你需要的用户登录就可以了。
然后输入,然后回车
ssh-keygen -t rsa
系统会提示你输入字符,如果你需要验证口令的话,就键入你需要设置的口令,如果不需要的话,直接留空按ENTER键就可以了
系统会在~/.ssh
目录(用户所在家目录下的.ssh目录,如果没有请自行创建.ssh
目录)生成id_rsa, id_rsa.pub文件
第一个文件就是私匙文件,第二个文件就是公匙文件。
到此,密匙文件已经生成好了。
接下来下载密匙文件到本地。
使用winscp登录vps,找到用户目录下面的.ssh
目录,下载id_rsa, id_rsa.pub两个文件
-
配置使用ssh密匙(切记先下载好密匙文件再开始配置)
复制公匙文件并修改文件名为authorized_keys
cd .ssh
cp id_rsa.pub authorized_keys
修改sshd_config文件
nano /etc/ssh/sshd_config
如果提示找不到nano命令的话。输入
yum install nano
也可以使用winscp找到该文件所在的目录直接修改文件,推荐使用winscp,可视化操作
双击即可打开文件修改。
参考以下修改
StrictModes no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys #ssh文件位置
PasswordAuthentication yes #使用密码 no为不使用密码
AuthenticationMethods publickey,password #如果密码和密钥都使用在末尾加上此行代码
文件夹权限一定要保证
/root/.ssh/ 文件夹的权限是700或者755,所有者为root
/root/.ssh/authorized_keys 的权限是600,所有者为root
重启ssh服务
systemctl restart sshd.service
至此,已经在服务器上面修改好了使用密匙验证登录。
如果需要在win下面登录服务器,需要使用puttygen修改一下格式。
打开puttygen.exe文件
点击load载入刚刚从服务器下载下来的私匙文件。
如果有口令,就输入你刚刚设置的口令。
,然后选择save private key保存私匙文件。
打开putty,输入ip与端口(如果你的ssh没有修改过的话就是默认的22)
然后在左边的窗口找到connection/SHH/auth,点击,
在右边选择browse浏览,找到刚刚用puttygen.exe另存为的私匙文件。
然后在点击open开始登录
输入你密匙文件的用户名和密码,
输入密码看不见字符是正常的。