我有一个启用ssh访问的hostgator帐户。当尝试使用以下命令上载生成的.pub密钥文件时:

rsync -av -e "ssh -p2222" /home/user/.ssh/key.pub username@111.222.33.44:.ssh/authorized_keys


我一直在获取:

Received disconnect from 111.222.33.44: 2: Too many authentication failures for username
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(601) [sender=3.0.7]


我以前一直在使用ssh玩弄,直到获得身份验证失败。但是现在看来auth失败计数器没有重置(现在等待超过12个小时,技术支持“假设”它在30分钟到1个小时后重置,另一个人告诉我“每次您尝试登录时重置用户名”,jeesh)。

,这真让我发疯。我什至在一个Slicehost自定义服务器中进行了设置,与这些人相比,问题更少。

有什么提示吗?也许是客户端而非服务器端。

评论

就我而言,生成密钥是一个错误。我生成了一个密钥,却错过了源地址,并在密钥末尾使用了用户名。

#1 楼

这通常是由于无意中向服务器提供了多个ssh密钥引起的。提供太多密钥后,服务器将拒绝任何密钥。

您可以通过在-v命令中添加ssh标志来获得详细的输出,从而亲自查看。您将看到提供了一堆密钥,直到服务器拒绝连接并说:“ [用户]的身份验证失败太多”。如果没有详细模式,则只会看到模棱两可的消息“由对等方重置连接”。

为防止提供不相关的密钥,您必须在~/.ssh/config(在客户端计算机)文件中添加IdentitiesOnly,如下所示:

Host www.somehost.com
  IdentityFile ~/.ssh/key_for_somehost_rsa
  IdentitiesOnly yes
  Port 22


如果使用ssh-agent,则有助于运行ssh-add -D清除标识。

如果不使用任何ssh主机配置,则必须像下面这样在ssh命令中显式指定正确的密钥:

ssh -i some_id_rsa -o 'IdentitiesOnly yes' them@there:/path/


注意:'IdentitiesOnly是”参数必须在引号之间。



ssh -i some_id_rsa -o IdentitiesOnly=yes them@there:/path/


评论


我不清楚这条线在哪里。在我要登录的服务器上,.ssh / config仅包含其他服务器的信息。您的意思是说这应该放在我要从ssh发送的计算机上的.ssh / config文件中?如果是这样,则不清楚,因为您的回答是“一旦您重新登录...”

– David LeBauer
2012年6月7日17:39

我必须将选项用双引号引起来,例如:ssh -i some_id_rsa -o“ IdentitiesOnly yes” them @ there:/ path /

–knb
13年4月23日在9:22

Windows用户运行PAGENT(Putty代理)时,请检查以确保仅加载需要的密钥。意外加载我的所有私钥后,我遇到了这个问题。

–克里斯·拉斯科(Chris Rasco)
13年11月19日在22:41

问题仍然存在:即使主机规则具有明确的IdentityFile / path / to / private_key_file设置,ssh为什么也“提供多个键”(〜/ .ssh下的任何内容)。难道不应该(至少)首先提供此明确指定的密钥吗?这不是openssh客户端中的错误/错误功能吗?

–arielf
17年1月26日,0:33

但是,它不应该使用IdentityFile选项指定的密钥吗?例如,如果没有IdentitiesOnly选项,当我尝试ssh gitlab.com时,它将尝试使用我的github密钥。这个不成立。

–尤利安·奥诺夫雷(Iulian Onofrei)
18-10-8在14:57

#2 楼

我发现了一种更简单的方法(如果使用密码验证):

ssh -o PubkeyAuthentication=no username@hostname.com


这将强制进行非密钥验证。我能够立即登录。

参考文献

评论


+1,希望我能给您更多。 Raspberry Pi是我在没有公共密钥的情况下唯一使用的设备。正在得到:“ pi的身份验证失败太多”

–blak3r
13年12月22日在7:05

并与rsync一起使用:rsync -av -e'ssh -o PubkeyAuthentication = no''user@host.com:〜/ remote_file''local_file'

– Ciro Santilli郝海东冠状病六四事件法轮功
16 Mar 9 '16 at 17:03



您还可以创建一个别名,以更快地进行密码验证。别名sshp ='ssh -o PubkeyAuthentication = no'

– dhempler
17年4月27日在14:59

#3 楼

我也遇到了此错误,发现服务器正在配置为最多接受6次尝试:

/etc/ssh/sshd_config
...
...
#MaxAuthTries 6


除了将IdentitiesOnly yes设置为您的~/.ssh/config文件还有其他一些选择。


增加MaxAuthTries(在ssh服务器上)
删除~/.ssh/目录中存在的一些密钥对,运行ssh-add -D
明确地将密钥链接到~/.ssh/config文件中的给定主机

像这样:

host foo
hostname foo.example.com
IdentityFile /home/YOU/.ssh/foo



考虑到它会稍微削弱您的ssh服务器,因为它现在将在给定的连接尝试中接受更多密钥,因此这可能不是一个好方法。在这里考虑蛮力攻击向量。
假设您有不需要的密钥并且可以永久删除它们,这是一个很好的方法。
仅设置身份的方法可能是处理此问题的首选方法问题!


评论


在最后一行中,您有identifyfile /home/YOU/.ssh/foo,但它应该是identityfile(不是t而是f)

– Nin
2014-09-26 10:05



就我而言,仅在计算机上运行ssh-add -D即可。谢谢!

–表现更多
20年8月20日在16:57

#4 楼

我在〜/ .ssh / config中添加了以下内容:

Host *
IdentitiesOnly yes


默认情况下启用选项IdentitiesOnly = yes。如果需要使用私钥进行连接,则应使用选项-i
指定它

#5 楼

如果您收到以下SSH错误:

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


如果.ssh中存储了五个或更多DSA / RSA身份文件(在我的系统上为默认设置),则可能会发生这种情况目录,并且如果未在命令行上指定“ -i”选项。

ssh客户端将首先尝试使用每个标识(私钥)登录,并在下一个提示进行密码认证。但是,sshd会在五次错误的登录尝试后断开连接(默认情况下,默认值可能会有所不同)。

如果.ssh目录中有多个私钥,则可以在命令行使用'-o'可选参数禁用“公钥身份验证”。

例如:

$ ssh -o PubkeyAuthentication=no root@host


评论


这正是我发生的一切!非常感谢您的解释;)

– El Ninja Trepador
16-10-4在13:59

#6 楼

如果您有密码,并且只想使用密码进行登录,请按以下步骤操作。

仅使用密码身份验证而不使用公钥,并且不要使用带有误导性的“键盘交互式”(这是包括密码的超集),您可以从命令行执行此操作:

ssh -o PreferredAuthentications=password user@example.com


#7 楼

用@David说,只需将此
IdentitiesOnly yes
添加到您的.ssh / config中,它的作用与ssh -o PubkeyAuthentication=no.

登录后,删除.ssh/authorized_keys
现在,返回本地计算机并输入以下

cat ~/.ssh/id_rsa.pub | ssh -o PubkeyAuthentication=no user@IP_ADDR 'cat >> .ssh/authorized_keys'。这应该使用公共密钥重新启用ssh

#8 楼

我知道这是一个旧线程,但是我只是想在此添加我遇到相同的错误消息,但这是由.ssh文件夹的所有者为root而不是使用密钥的用户引起的。我通过运行以下命令更正了此问题:

sudo chown -R user:user /home/user/.ssh


我还确保对.ssh文件夹的权限正确:

sudo chmod 700 /home/user/.ssh


.ssh目录中的文件应具有600的权限:

sudo chmod 600 /home/user/.ssh/authorized_keys


评论


我会在没有警告的情况下谨慎使用。某些密钥(特别是AWS)的SSH密钥权限通常限制为400。尝试将它们设置为高于此值将导致密钥不被接受,并可能使您无法使用自己的AWS账户。

– Michael Ryan Soileau
17 Mar 9 '17 at 18:35



#9 楼

就我而言,问题是目录权限。这为我修复了此问题:

$ chmod 750 ~;chmod 700 ~/.ssh


#10 楼


身份验证失败太多


该消息是由于给定远程SSH服务器上允许的限制而导致身份验证尝试失败的次数过多而引起的。这可能意味着您在SSH代理中添加了太多身份。

这里有一些建议:


添加-v来查看是否是这种情况(您使用的身份太多)。
通过ssh-add -l列出添加的身份。
通过ssh-add -d从代理中删除失败的身份。
您还可以通过ssh-add -D删除所有身份,然后仅重新添加相关的。

如果您可以访问SSH服务器,请检查MaxAuthTries选项(请参阅:man sshd_config)。

相关文章:sshd_config的' MaxAuthTries的限制?

如果这些帮助都没有,请确保您使用的是正确的凭据或文件。


#11 楼

就我而言,这是因为我使用了用户名“ ubuntu”而发生的,但是在这种情况下,用户名是“ ec2-user”

我做了“ John T”的建议后,得到了这个错误:


权限被拒绝(公钥)。


然后我找到了解决方法(即,将用户名更改为“ ec2-user”)这个答案:https://stackoverflow.com/questions/1454629/aws-ssh-access-permission-denied-publickey-issue

#12 楼

我在.ssh/authorized_keys2中拥有我的公钥,但是服务器配置为仅读取.ssh/authorized_keys:将文件移动到.ssh/authorized_keys之后,我可以使用我的密钥成功登录。

#13 楼

对我来说这是一个有趣的人。原来,我在本地化模式下本地更改了密码,该本地化模式不同于我用来远程登录的键盘。这实际上使我的密码与我认为的密码有所不同,可能是因为我的一个特殊字符与键盘上所说的不同。

#14 楼

未输入正确的用户名和密码时,会出现此消息。

首先检查是否列出了用户:

vim /etc/passwd