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


“服务器意外关闭网络
connection“。


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

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

评论

superuser.com/questions/187779/…

如果您收到``身份验证失败''太多错误,请务必禁用ssh代理(例如Windows上的pageant),然后才能完全登录。

#1 楼

您确定是否允许ssh的root登录吗?

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

评论


如何重新启动sshd:cyberciti.biz/faq/howto-restart-ssh

–ZéCarlos
20 May 29 '13:19

#2 楼

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


ssh -i / path / to / id_rsa root @ host
在/中指定Host / IdentityFile对home / USER / .ssh / config。


Host host
IdentityFile /home/USER/.ssh/id_rsa
Host host2
IdentityFile /home/USER/.ssh/id_rsa2


增加SSH服务器上/ etc / ssh / sshd_config中的MaxAuthTries值(不推荐)。


评论


这确实应该是公认的答案!

–本杰明
2014年12月2日在20:00

要获得可接受的答案,答案实际上必须与问题中提到的软件有关。 =)

– rakslice
2015年4月7日在4:26

超出限制的另一个原因可能是您的ssh代理。 ssh -vv显示了正在尝试的两个密钥的多个版本(由ssh-agent提供)。我认为这是由于我不经常重新启动并替换了一些已过期的密钥所致。显然ssh-agent不会用新密钥覆盖旧密钥。我杀死了ssh-agent,问题消失了。

–马克
17年7月11日在1:42



增加MaxAuthTries有什么缺点?我怀疑许多攻击是通过尝试许多不同的密钥来进行的。此外,如果攻击者想要这样做,他们只要关闭连接并在每次达到极限时打开一个新连接即可。无论如何,他们不会成功地强行使用密钥。

–卡巴斯德
17年9月18日在19:12

我将结合#2和将所有(或大部分)ssh密钥移动到单独的目录,例如〜/ .ssh / keys。如果没有给出特定的密钥(通过-ioption或config文件),则ssh甚至在尝试提供密码提示之前,都会尝试〜/ .ssh中的所有密钥。如果您有许多ssh密钥,则意味着您永远不会进入新服务器上的密码提示。

–丹尼尔·库尔曼
18年7月17日在7:22

#3 楼

如果收到以下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 root@host


评论


非常感谢!在这里使用只能通过SSH访问的Ubuntu Server。在盲目地关注互联网上的教程之后,我已经设置了“ MaxAuthTries 1”。

–安德烈·菲格雷多(Andre Figueiredo)
2015年10月6日在21:15

你才救了我的命!没有使用密钥身份验证,因此其他答案没有帮助。这样很容易解决!!

–乔治·格林(George Green)
17年1月16日在19:37

这就是答案

–smac89
18年6月1日在3:36



我只是使用密码身份验证再次在密钥上进行了复制,现在每次都可以使用。我的.ssh目录中有很多密钥,我认为这并不重要。

–肯·夏普
19年7月15日在11:17

这是最相关的答案,并且实际上应该是ssh-copy-id的默认行为,因此,如果我要将ID复制到服务器上,通常就不存在。但是,如果ssh首先尝试使用pubkey对服务器进行身份验证,则服务器将中止连接,然后才能输入密码。

– Sprinterfreak
19年7月28日在15:30

#4 楼

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


MaxAuthTries 30


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

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


ssh -v -p port_number user @ servername


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

玩得开心。

评论


在我的特定情况下,问题是我已通过代理转发登录,试图运行使用其自身的SSH身份的脚本。当我使用代理转发来运行它时,在尝试使用它自己之前,存在太多身份。因此,我设置了脚本以丢弃代理环境,然后将其清除。我也可以增加MaxAuthTries,但是在这种情况下我不需要这样做。

– Sean Reifschneider
2010年11月21日,0:04

谢谢。 -v显示了我的ssh客户端尝试使用多个密钥(我现在有很多)。我用ssh-add -D从代理中清除了它们

– joeytwiddle
14年7月14日在7:54

另请参阅:serverfault.com/questions/139870

–好奇的山姆
20年6月10日在15:25

#5 楼

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


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

~/.ssh文件夹中的ssh密钥太多,例如16个左右。而且在配置中同时没有这两个IdentityFileIdentitiesOnly指令时,我的机器显然在尝试正确的IdentityFile之前尝试了~/.ssh中的所有键并达到最大尝试次数。

评论


我的配置中有〜30个键,这在新的小型设备上导致此OP错误。我添加了“ IdentitiesOnly = yes”并将其连接。我每天都学到新东西...

– dturvene
19年12月15日在19:35

'IdentitiesOnly = yes'标志确实很有帮助。您还可以在要与之一起使用的主机上为配置文件创建一个通配符主机,我已获得“ Host * IdentitiesOnly = yes PreferredAuthentications = publickey”

– AveryFreeman
20-10-29在16:31



#6 楼

这是一个坏习惯。
在远程机器上只有一个普通用户,并使用它通过ssh进行连接,然后使用su / sudo获得root用户访问权限。

#7 楼

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

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


然后在远程计算机中尝试ssh

#8 楼

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

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


#9 楼

我也面临同样的问题。如果您正在使用Pageant并加载了大量密钥,则很容易发生这种情况,因为这些服务器将每个公开密钥的提供都计为身份验证尝试。

(此建议从此处获取。)

评论


由于链接腐烂,答案变得毫无用处,因此我们不太热衷于此处仅链接的答案。一定要保留链接,但是如果您可以在一两段中总结解决方案,那么您很可能会在这里提出自己的建议。

– MadHatter
17年11月2日在6:26



希望您能原谅我的后续修改;现在(我希望)很清楚地表明,您所指的建议就是您所提供的建议,但仍归功于原始信息。从我+1来努力改善您的答案!

– MadHatter
17年11月2日在6:42



我在Putty中也遇到了“身份验证失败太多”的问题。从PageAnt删除所有其他键之后,终于成功登录了。

– klor
19年6月6日在10:40



#10 楼

我建议您,就像上面提到的Anon一样,使用另一个用户获得ssh访问权限,然后使用su命令获得root访问权限。

还要确保在服务器上的PermitRootLogin文件中启用/etc/ssh/sshd_config

#11 楼

我也遇到了类似的问题。
但是真正的原因是我在管道上的一台机器的配置文件中有ForwardAgent yes
我正在从A机连接到B机,再到C端。 br />
在B-> C的ssh尝试中显示了错误消息,但这是由A激活了转发引起的。因此,首先为C提供了A中的所有键,然后才提供了B中的所有键。

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

#12 楼

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


使用“ sudo passwd root”设置root密码,然后
使用“ nano / etc / ssh_config”编辑并保存ssh配置文件“

,将RSAAuthentication更改为“ no”,而不是yes。


#13 楼

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

我有一个带有SSH密钥的标准无用虚拟机,可以使用Putty SSH进入它。在尝试在PHPStorm中进行部署时尝试获取此错误时,出现too many authentication failures错误。所以我增加了MaxAuthTries中的sshd_config,然后遇到了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。

#14 楼

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


如何从此错误情况中恢复并让腻子再次登录?


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

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

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

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

#15 楼

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

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

sudo fail2ban-client status


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

sudo fail2ban-client status sshd


,并取消禁止IP abcd:

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


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

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

man fail2ban
man hosts.deny


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

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

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

#16 楼

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

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

vncserver -kill :1


,然后重新启动-

vncserver


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

192.0.2.99:5901


完成! !

评论


这与问题无关。

–肯·夏普
19年7月15日在11:19

#17 楼

请按照以下步骤进行解析


备份/ etc / ssh / sshd_config
增大sshd_config中MaxAuthTries的值
stopsrc -s sshd; startsrc -s sshd

在上述更改之后再次检查

#18 楼

我遇到了同样的问题,不断收到“ SServer发送了断开连接的消息类型2(协议错误):用户的身份验证失败太多”

我通过删除所有ssh(.ppk密钥)解决了此问题然后登录到AD集成服务器。

评论


此答案没有用,建议删除.ppk文件很危险。拜托大家,如果您认为需要删除.ppk文件(并且我想不到一个很好的理由),请将其重命名为其他名称,不要删除它们。它们包含您可能需要的密钥。

–法律29
17年5月27日在21:04