如何禁止SSH使用密码登录

时间:2020-03-05 15:29:44  来源:igfitidea点击:

基本的SSH强化步骤之一是禁用基于密码的SSH登录。

我们知道可以将ssh与root或者其他帐户的密码一起使用,以远程登录Linux服务器。

但这带来了安全风险,因为大量的漫游器始终试图使用随机密码登录到系统。
这称为蛮力攻击。

如果在Linux服务器上检查登录信息。
我们会惊讶地发现服务器上发生了如此多的失败尝试。

Hyman@theitroad:~# lastb | tail 
root     ssh:notty    49.235.87.213    Wed Apr  1 06:25 - 06:25  (00:00)
root     ssh:notty    95.128.137.176   Wed Apr  1 06:25 - 06:25  (00:00)
aw       ssh:notty    36.108.175.68    Wed Apr  1 06:25 - 06:25  (00:00)
aw       ssh:notty    36.108.175.68    Wed Apr  1 06:25 - 06:25  (00:00)
fx       ssh:notty    113.88.164.53    Wed Apr  1 06:25 - 06:25  (00:00)
fx       ssh:notty    113.88.164.53    Wed Apr  1 06:25 - 06:25  (00:00)
root     ssh:notty    112.215.113.10   Wed Apr  1 06:25 - 06:25  (00:00)
root     ssh:notty    152.32.173.74    Wed Apr  1 06:25 - 06:25  (00:00)

这就是为什么我们应该使用强密码的原因。
处理它们的正确方法是使用诸如fail2ban之类的工具。

另一种方法是禁用基于密码的身份验证,以便没有人可以通过登录密码进行连接。

这样,只有那些将其公共ssh密钥添加到服务器的系统(称为基于密钥的身份验证)才能连接到服务器。
阅读有关设置ssh配置的信息。

禁用SSH密码身份验证

在执行此操作之前,必须牢记以下几点:

  • 确保在个人/工作计算机上创建ssh密钥对,并将此公共SSH密钥添加到服务器,以便至少可以登录到服务器。
  • 禁用基于密码的身份验证意味着我们无法从随机计算机进入服务器。
  • 我们一定不能丢失ssh密钥。如果我们格式化个人计算机并丢失了ssh密钥,则将永远无法访问服务器。
  • 如果我们被锁定,则将永远无法访问服务器。

一些云服务器提供商(例如Linode和UpCloud)提供了VNC控制台,该控制台仍然可以为我们提供帮助。

警告

  • 如果我们熟悉SSH和其他sysadmin概念,请仅禁用基于密码的SSH身份验证。我们还应该知道如何使用基于终端的文本编辑器,例如Vim或者Nano。

好的。
因此,现在我们知道与通过密码禁用SSH登录相关的风险。
让我们来看看如何做。

使用基于密钥的身份验证以root用户身份登录到Linux服务器。
使用Nano或者Vim之类的编辑器来编辑以下文件:

/etc/ssh/sshd_config

找到以下行:

PasswordAuthentication yes

并将其更改为:

PasswordAuthentication no

如果该行的开头有一个(表示已注释掉),请将其删除。

进行这些更改后,请保存文件,然后使用以下命令重新启动SSH服务:

systemctl restart ssh