如果你使用过Linux操作系统的VPS或其他服务器,可能在登录时经常会提示你有多少次登录失败的记录。
这种登录失败的记录实际上也就是攻击者使用脚本自动扫描全网的IP然后进行筛选和测试,最终脚本会使用内置的密码组尝试登录开放22端口的Linux服务器。
当然如果登录成功那么意味着你的服务器就是被黑了,除了搜寻服务器中有价值的内容外就是充当肉鸡了。
为此我们可以关闭掉22端口使用密钥来进行登录,这样子可以瞬间把服务器的安全性提高好几个档次呢。
以下是基本的操作流程:
1、登录Linux服务器来生成公钥和私钥:
[[email protected] ~]# ssh-keygen <== 生成密钥对 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): <== 密钥对默认路径,直接Enter即可 Enter passphrase (empty for no passphrase): <== 输入私钥密码,若直接按回车则不对私钥加密 Enter same passphrase again: <== 再次输入私钥密码 Your identification has been saved in /root/.ssh/id_rsa. <== 这是生成好的私钥 Your public key has been saved in /root/.ssh/id_rsa.pub. <== 这是生成好的公钥 The key fingerprint is: 2b:28:25:b6:62:2f:34:ee:f3:3:5e:76:68:37:d9:6e [email protected] The key‘s randomart image is: +--[ RSA 2048]----+
2、进入刚刚生成密钥对的默认路径,然后将生成的公钥安装到操作系统上:
[[email protected] ~]# cd /root/.ssh <== 进入密钥对所在目录 [[email protected] .ssh]# cat id_rsa.pub >> authorized_keys <== 安装公钥文件至系统
3、键入以下命令对公钥和目录设置权限:
[[email protected] .ssh]# chmod 600 authorized_keys <== 设置600权限 [[email protected] .ssh]# chmod 700 ~/.ssh <== 将目录设置700权限
4、通过FTP工具将SSH配置文件(/etc/ssh/sshd_config
)下载本地编辑(也可直接用vim
进行编辑):
请将以下三项内容前的#号删除(#号为注释符、即不生效),如果对应项后面默认的是No则改成Yes
注意:如果你本身并不是使用Root账户登录的那么不要修改PermitRootLogin
选项包括前面的#号。
5、修改完成后将sshd_config
再上传并覆盖掉服务器上原有的文件,覆盖成功后重启SSH服务:
[[email protected] .ssh]# service sshd restart <== 重启SSH服务 Redirecting to /bin/systemctl restart sshd.service
6、将私钥/root/.ssh/id_rsa
下载到本地进行测试,以XShell为例在管理中把验证方法改成Key:
依次点击用户密钥后的浏览、导入并选择刚刚下载的id_rsa
文件,选中后点击确定即可(密码即密钥密码)
更改后SFTP连接也同样需要使用密钥进行登录,以FileZilla为例:
点击文件—管理—选择站点—常规—登录类型—密钥文件—浏览—然后选择私钥文件,FileZilla会提示你转成Putty的PPK格式你按提示操作即可。
7、在SSH和SFTP测试都可以使用密钥登录后我们再次编辑SSH配置文件(就刚刚下载的sshd_config
):
将PasswordAuthentication
前面的#删除并将后面的Yes
改成No
即可禁止使用密码来登录SSH和SFTP。
修改后把文件保存好再次上传至服务器然后重启SSH服务器就大功告成啦!注意不要丢失私钥和密码哦。
[[email protected] .ssh]# service sshd restart <== 再次重启SSH服务 Redirecting to /bin/systemctl restart sshd.service [[email protected] .ssh]#