2010-09-12 17:14:13 +0000 2010-09-12 17:14:13 +0000
264
264

*username*

我有一个 hostgator 帐户,启用了 ssh 访问权限。当我尝试用这个命令上传生成的.pub key文件:

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,直到我得到了认证失败。但现在看来,认证失败计数器并没有重置(已经等了12个多小时了,技术支持 “假设 "它在30分钟到1小时后重置,另一个人告诉我 "每次你尝试用用户名登录时都会重置",Jeesh)。我甚至在Slicehost自定义服务器上设置了这个问题,而且比这些人的问题要少。

有什么建议吗?也许是客户端的问题,而不是服务器端的问题。

答案 (14)

423
423
423
2010-09-12 17:53:29 +0000

这通常是由于不小心提供了多个ssh密钥***导致的。

你可以通过在-v命令中添加ssh标志来获得详细的输出,你可以看到这一点。你会看到提供了一堆密钥,直到服务器拒绝连接,并说:“太多验证失败了。”[用户]太多验证失败"。如果没有verbose模式,你只会看到模糊的信息“Connection reset by peer”_。

为了防止不相关的密钥被提供,你必须在~/.ssh/config(在客户端机器上)文件中的每一个主机条目中明确指定这一点,例如:

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

如果你使用ssh-agent,运行IdentitiesOnly来清除身份。如果你没有使用ssh主机的配置,你必须在ssh-add -D命令中明确指定正确的键,如:

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

_注意:"IdentitiesOnly yes “参数需要在引号之间。

195
195
195
2012-03-25 00:14:49 +0000

我找到了一个更简单的方法(如果使用密码验证):

ssh -o PubkeyAuthentication=no username@hostname.com

这就强制要求非密钥验证。我可以立即登录。 参考

27
27
27
2011-06-09 04:56:25 +0000

我也收到了这个错误,发现它的发生是由于服务器被配置为最多接受6次尝试:

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

除了在你的IdentitiesOnly yes文件中设置~/.ssh/config之外,你还有其他几个选项。删除你在MaxAuthTries目录中的一些密钥对,运行~/.ssh/ 3. 在你的ssh-add -D文件中显式地将密钥链接到指定的主机上

像这样:

host foo
hostname foo.example.com
IdentityFile /home/YOU/.ssh/foo
  1. 这可能不是一个好的方法,因为它可能会削弱你的ssh服务器,因为它现在会在一个给定的连接尝试中接受更多的密钥。想想看这里的蛮力攻击载体。是一个很好的方法,假设你有不需要的密钥,可以永久删除。而设置IdentitiesOnly的方法可能是处理这个问题的首选方法!
7
7
7
2014-07-23 17:29:54 +0000

我在~/.ssh/config中添加了这样的内容:

Host *
IdentitiesOnly yes

,默认情况下,它启用了IdentitiesOnly=yes选项。如果你需要用私钥连接,你应该用选项-i来指定。

6
6
6
2013-09-20 21:44:02 +0000

如果你得到以下SSH错误:

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

如果你在.ssh目录下有5个或更多的DSA/RSA身份文件(在我的系统中是默认的),并且在命令行中没有指定’-i'选项,那么就会出现这种情况。

如果你在.ssh目录下有很多私钥,你可以在命令行中使用’-o'选项禁用 “公钥认证"。

6
6
6
2015-06-19 14:22:41 +0000

如果你有密码,并想简单地使用密码登录,下面是你的操作方法。

要只使用密码认证,不使用Public-key,也不使用误导性的 “键盘-interactive"(这是一个包括密码在内的超级集),你可以在命令行中这样做:

ssh -o PreferredAuthentications=password user@example.com
3
3
3
2014-01-25 05:48:51 +0000

遵循@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。

2
2
2
2014-06-13 17:37:06 +0000

我知道这是个老问题,但我只是想在这里补充一下,我遇到了同样的错误信息,但这是由于.ssh文件夹的所有者是root,而不是使用密钥的用户造成的。我通过运行以下命令纠正了这个问题:

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

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

sudo chmod 700 /home/user/.ssh

1
1
1
2016-02-20 22:57:15 +0000

我的情况是目录权限的问题。这样我的问题就解决了:

$ chmod 750 ~;chmod 700 ~/.ssh
0
0
0
2019-11-24 01:41:40 +0000

这对我来说是个有趣的问题。原来,我在本地修改密码的时候,我在本地化模式下修改了我的密码,而在远程登录时,我使用的键盘与我使用的键盘不同。这实际上使我的密码与我想象中的不一样,可能是因为我的一个特殊字符与键盘上说的不一样。

0
0
0
2018-04-12 13:28:15 +0000

太多验证失败

这条消息是由于在远程SSH服务器上允许的限制下,有太多的验证尝试失败。这可能意味着你在SSH代理中添加了太多的身份验证失败。

这里有几个建议:

  • 添加-v查看是否是这种情况(你使用了太多的身份验证)。
  • 你也可以通过ssh-add -l删除所有的身份,然后只重新添加相关的身份。
  • 如果你已经访问了SSH服务器,请检查ssh-add -d选项(参见: ssh-add -D )。
0
0
0
2017-05-05 07:57:18 +0000

我在.ssh/authorized_keys2里有我的公钥,但服务器配置为只读.ssh/authorized_keys

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys

&001

将我的文件移到.ssh/authorized_keys后,我可以用我的公钥成功登录。

0
0
0
2014-11-19 08:10:08 +0000

在我的案例中,出现这种情况是因为我使用的用户名是 “ubuntu",但是这个例子中的用户名是 "ec2-user”

在我按照 “John T "的建议做了之后,我得到了这个错误:

Permission denied (publickey): https://stackoverflow.com/questions/1454629/aws-ssh-access-permission-denied-publickey-issue

-1
-1
-1
2016-09-26 15:23:15 +0000

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

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

vim /etc/passwd