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
评论
就我而言,生成密钥是一个错误。我生成了一个密钥,却错过了源地址,并在密钥末尾使用了用户名。