禁止使用密码登录 ssh(转而使用密钥代替密码登录)可以提高远程服务器的安全性,降低被远程攻击的可能性。
我们都知道可以使用 root 或者其他用户的密码通过 ssh 登录到远程 Linux 服务器。
但是这会有一定的安全风险,大量的暴力攻击脚本总是会试图使用随机密码登录到我们的系统。查看 Linux 服务器上的登录日志,如果有大量失败登录记录,那可能就是被暴力攻击登录的痕迹。
这就是我们为什么一直强调要使用强密码的原因。我们在 可以提高 ssh 安全性的几个配置 一文中提到过,加强安全性可以使用类似 fail2ban 的工具,或者直接禁止使用密码登录,这样不管是谁都无法通过登录密码进行远程连接了。
禁用密码登录后,那怎样在连接 ssh 呢?可以使用密钥,即将公共 ssh 密钥添加到服务器的系统(称为基于密钥的身份验证)的方式连接到服务器。
禁用 ssh 密码身份验证
在真正动手设置之前,需要注意以下事项:
1)确保在个人计算机上创建了 ssh 密钥对,并将公钥添加到远程服务器,以便可以登录到远程服务器;
2)禁用基于密码的身份验证,意味着你不能使用其他计算机通过 ssh 连接远程服务器;
3)ssh 密钥需妥善保存,如果因为个人计算机被格式化或其他原因导致丢失密钥,那么就无法连接远程服务器了。
一些云服务器提供商(比如 Linode 和阿里云服务)提供了 VNC 控制台,如果无法连接远程服务器,那么可以使用这种方式连接系统。
另外,要禁用基于密码的 ssh 身份验证,你需要熟悉 ssh 和其他 sysadmin 概念,且知道如何使用基于终端的文本编辑器,比如 vim 或 nano。
在了解以上注意事项后,我们接下来看看如何禁用基于密码的 ssh 身份验证。
首先,以 root 身份登录到 Linux 服务器,然后使用基于终端的编辑器(比如 vim)编辑以下文件:
找到如下内容:
然后将其改为:
如果该行被注释掉了(前面有一个 #),那么取消注释(即去掉前面的 #)。
修改完成后,保存文件,并重启 ssh 服务:
这样就可以了。
以上就是本次分享全部内容,欢迎讨论。