it-swarm.cn

如何从“用户根身份验证失败太多”中恢复

我已经做了几次尝试,使用PuTTY终端为root @ Host用户建立SSH连接。这样做时,我多次指定了错误的凭据,然后我正确地指定了它们,然后在凭据被接受之后,ssh会话中断

“服务器意外关闭网络连接”。

PuTTY终端报告此错误。尝试从本地控制台ssh root @ localhost时-它可以正常工作。当我从其他主机SSH otheruser @ Host时,它也可以正常工作。因此,网络连接问题无罪。我想到的唯一错误是:“用户root身份验证失败太多”尽管PuTTY报告了另一个错误。

问题是:如何从此错误情况中恢复并再次让PuTTY登录?重新启动sshd似乎无济于事

70
user11722

您确定允许root登录ssh吗?

检查sshd_config并验证是否允许root登录。如果设置更改,则需要重新启动sshd。

8
damorg

“用户root的身份验证失败太多”表示您的SSH服务器的已超出MaxAuthTries限制。发生这种情况是为了使您的客户端尝试使用/home/USER/.ssh/中存储的所有可能的密钥进行身份验证。

这种情况可以通过以下方式解决:

  1. ssh -i/path/to/id_rsa root @ Host
  2. / home/USER/.ssh/config中指定Host/IdentityFile对。
    • Host host
    • IdentityFile /home/USER/.ssh/id_rsa
    • Host host2
    • IdentityFile /home/USER/.ssh/id_rsa2
  3. / etc/ssh/sshd_config中增加SSH服务器上的MaxAuthTries值(不推荐)。
128
Peta Sittek

如果出现以下SSH错误:

$ Received disconnect from Host: 2: Too many authentication failures for root

如果(在我的系统上为默认)在.ssh目录中存储了五个或更多DSA/RSA身份文件,则可能会发生这种情况。在这种情况下,如果未在命令行上指定-i选项,则ssh客户端将首先尝试使用每个标识(私钥)登录,然后下一次提示进行密码认证。但是,sshd会在五次错误的登录尝试后断开连接(再次默认情况下可能会有所不同)。

因此,如果您的.ssh目录中有许多私钥,则可以在命令行使用Public Key Authentication可选参数禁用-o

例如:

$ ssh -o PubkeyAuthentication=no [email protected]
98
Will Verna

在远程计算机上,打开/ etc/sshd_config并更改值

MaxAuthTries 30

当您已安装多个密钥或打开多个连接时,这是典型的问题。服务器会逐步检查每个密钥,如果MaxAuthTries设置为3,则在第3次尝试后将断开您的连接。典型的SSH安全性。

我建议您在连接到远程计算机的过程中使用详细模式来分析问题。

ssh -v -p port_number用户名@服务器名

像这个论坛上的大多数人一样,猜测是错误的,而且浪费时间。首先尝试分析问题,收集信息然后询问。

玩得开心。

17
user59664

对我来说,此问题已通过为要连接的主机创建以下ssh_config来解决。

(〜/ .ssh/config)

Host example
HostName example.com
User admin
IdentityFile ~/path/to/ssh_key_rsa
IdentitiesOnly=yes

发生问题是因为~/.ssh文件夹中的ssh键太多,例如16个左右。并且在配置中没有这两个IdentityFileIdentitiesOnly指令,我的机器显然正在尝试~/.ssh中的所有键,并在尝试正确的IdentityFile之前达到最大尝试次数。

15
Ninjaxor

这是不好的做法。只需在远程机器上有一个普通用户并使用它通过ssh进行连接,然后使用su/Sudo获得root访问权限。

12
Anonymous

我也面临同样的问题。如果您正在使用Pageant并有大量的键加载到其中,因为这些服务器将每次公开密钥提供都视为一次身份验证尝试。

(此建议摘自 此处 。)

6
Prabath Dolawatta

我建议您,正如上面提到的Anon所述,请使用另一个用户获得ssh访问权限,然后使用su命令获得root访问权限。

另外,请确保在服务器上的/etc/ssh/sshd_config文件中启用PermitRootLogin

6
Rodent43

我通过运行以下命令在系统中解决了此问题:

eval $(ssh-agent)
ssh-add  ~/.ssh/keyname

然后在远程机器上尝试ssh

5
Sunil shakya

要暂时解决此问题,直到可以完全解决其他地方提到的问题为止,可以重置用户的PAM提示,以便他们可以重试:

pam_tally --reset --user <USERNAME>
pam_tally2 --reset --user <USERNAME>
3
andyfeller

我被类似的问题咬了。但是,真正的原因是我有ForwardAgent yes沿着管道在机器的配置文件中。我正在从机器A连接到机器B,再连接到机器C。

从B-> C的ssh尝试中显示了错误消息,但这是由A激活了转发引起的。因此,首先为C提供了A的所有密钥,然后才为其提供B的所有密钥。

当我再向A添加一个键时,它突然出现。

2
Igor Stoppa

我通过以下方式在Mac上解决了此问题:

  1. 用“ Sudo passwd root”设置root密码,然后
  2. 使用“ nano/etc/ssh_config”编辑并保存ssh配置文件
  3. 将RSAAuthentication更改为“ no”而不是。
1
tallbr00

其他答案告诉您以root用户身份建立连接的最佳方法及其安全含义,但是您的显式问题是

如何从此错误情况中恢复并使PuTTY重新登录?

您上次提到连接时,远程服务器断开了连接。

我认为您可能会发现,远程服务器正在运行fail2ban(*),并且在成功登录后将IP“锁定”。您可以通过尝试再次登录进行测试,甚至不会获得登录提示。

有两种解决方案,您可以等待入狱时间,此时情况可以简单地恢复正常,但是入狱时间可以是任何事情。或者,您可以找到另一台要登录的计算机,然后执行此操作,然后“取消锁定”您的IP,在这种情况下,“不同”是从远程服务器的角度来看的,因此位于同一防火墙后面的另一台计算机可能也无法工作。

(*)fail2ban是一个超级方便的守护程序,可以在检查到来自客户端的潜在恶意行为时,定期检查各种日志文件并调整防火墙规则,以使服务器“消失”。在debian上,它开箱即用,配置为检测来自特定IP的多个ssh登录失败,并且在3(我认为)之后,它将丢弃来自该IP的所有数据包。出色地制止了这些脚本化的蛮力攻击。

0
Sufferer

我通过Ubuntu 16.04服务器上的两个简单步骤解决了这个问题-

首先停止我的vnc服务器或终止进程-

vncserver -kill :1

然后重新启动-

vncserver

之后,从远程桌面客户端连接它-

999.99.99.99:5901

做完了!

0
Rajnesh Thakur

好的,所以就我而言,这很奇怪,就在这里...

我有一个标准的流浪汉VM,带有SSH密钥,我可以使用PuTTY SSH进入它。在PHPStorm中进行部署期间尝试上它时,我得到too many authentication failures错误。所以我增加了sshd_config中的MaxAuthTries,然后遇到Auth failed错误,然后是Auth cancel

现在,我不知道为什么我什至尝试这样做,但是...我在PHPStorm的部署窗口中的SSH密钥路径的末尾添加了点。就像这样:

C:\Users\Deadpool\\.ssh\chimichanga

现在是这样的:

C:\Users\Deadpool\\.ssh\chimichanga.

它的工作原理是:在我的“ .ssh”文件夹中,我有更多文件:

chimichanga - copy of "id_rsa" from vagrant machine
chimichanga.ppk
chimichanga.pub

我不确定那个骗人的点是做什么的,但是使用.ppk文件不起作用,所以我想这有点神奇;)哦,在那个“点把戏”之后,我可以摆脱MaxAuthTries了。

0
Adam Witorean

正如@sufferer在另一个答案中提到的那样,某些Linux发行版包括一些监视器,以防止对外部可见服务(如SSH)的暴力攻击,例如DenyHostsfail2ban。这些监视器检查日志文件以查找失败的尝试,并添加过滤器以阻止发生过多故障的IP地址(该数目是可配置的,并且与sshd配置无关)。

如果您的发行版包含fail2ban,用于保护向iptables防火墙添加规则的服务,您可以使用以下命令检查受监管的服务或“监狱”:

Sudo fail2ban-client status

SSH服务的监狱是sshd,因此要检查是否存在被禁止的IP,可以使用:

Sudo fail2ban-client status sshd

并取消某些IP a.b.c.d:

Sudo fail2ban-client set sshd unbanip a.b.c.d

如果您有DenyHosts,则禁止列表位于文件/etc/hosts.deny中;您可以直接以root用户身份编辑此文件。要授予某些IP a.b.c.d永久访问权限,您可以添加sshd:a.b.c.d到文件/etc/hosts.allow。

和往常一样,man命令是您的朋友:

man fail2ban
man hosts.deny

应该存在其他类似的实用程序,但我只使用过这些。

请注意,增加sshd配置中允许的重试次数不会释放被禁止的IP,而只会允许同一连接中出现更多故障。如果超过了允许的数量,则用户/攻击者只需再次重新连接即可尝试n次。

其他服务集成了禁令列表(如Rajnesh Thakur关于重启VNC服务器的回答所示)。

0
Fjor