Gab*_*lla 284 ssh authentication
我有一个启用了 ssh 访问的 hostgator 帐户。尝试使用以下命令上传生成的 .pub 密钥文件时:
rsync -av -e "ssh -p2222" /home/user/.ssh/key.pub username@111.222.33.44:.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
我不断得到:
从 111.222.33.44 收到断开连接:2:用户名身份验证失败太多 rsync:连接意外关闭(到目前为止已收到 0 个字节)[发送方] rsync 错误:io.c(601) [sender=3.0.7] 处的无法解释的错误(代码 255)
我之前一直在玩 ssh,直到我遇到身份验证失败。但是现在似乎身份验证失败计数器没有重置(现在已经等了 12 多个小时,技术支持“假设”它在 30 分钟到 1 小时后重置,另一个人告诉我“每次尝试登录时它都会重置用户名”,jeesh)。
这让我发疯。我什至在 Slicehost 自定义服务器中设置了这个,并且比这些人遇到的问题更少。
有小费吗?也许这是客户端而不是服务器端的东西。
Joh*_*n T 453
这通常是由于无意中向服务器提供了多个 ssh 密钥造成的。提供太多密钥后,服务器将拒绝任何密钥。
您可以通过将-v
标志添加到您的ssh
命令中来获得详细输出,从而亲眼看到这一点。您将看到提供了一堆密钥,直到服务器拒绝连接说:“[用户] 的身份验证失败太多”。如果没有详细模式,您将只会看到不明确的消息"Connection reset by peer"。
为了防止提供不相关的密钥,您必须在~/.ssh/config
(在客户端机器上)文件中的每个主机条目中明确指定它,如下添加IdentitiesOnly
:
Host www.somehost.com
IdentityFile ~/.ssh/key_for_somehost_rsa
IdentitiesOnly yes
Port 22
Run Code Online (Sandbox Code Playgroud)
如果您使用 ssh-agent,它有助于运行ssh-add -D
以清除身份。
如果您没有使用任何 ssh 主机配置,则必须在ssh
命令中明确指定正确的密钥,如下所示:
ssh -i some_id_rsa -o 'IdentitiesOnly yes' them@there:/path/
Run Code Online (Sandbox Code Playgroud)
注意:'IdentitiesOnly yes' 参数需要在引号之间。
或者
ssh -i some_id_rsa -o IdentitiesOnly=yes them@there:/path/
Run Code Online (Sandbox Code Playgroud)
小智 214
我找到了一种更简单的方法来做到这一点(如果使用密码身份验证):
ssh -o PubkeyAuthentication=no username@hostname.com
Run Code Online (Sandbox Code Playgroud)
这会强制进行非密钥身份验证。我能够立即登录。
slm*_*slm 29
我也收到此错误,发现它发生在 b/c 服务器配置为最多接受 6 次尝试:
/etc/ssh/sshd_config
...
...
#MaxAuthTries 6
Run Code Online (Sandbox Code Playgroud)
除了IdentitiesOnly yes
在~/.ssh/config
文件中设置 ,您还有其他几个选项。
MaxAuthTries
(在ssh服务器上)~/.ssh/
目录中存在的一些密钥对并运行ssh-add -D
~/.ssh/config
文件中的给定主机像这样:
host foo
hostname foo.example.com
IdentityFile /home/YOU/.ssh/foo
Run Code Online (Sandbox Code Playgroud)
可能不是一个好方法,因为它会稍微削弱您的 ssh 服务器,因为它现在会在给定的连接尝试中接受更多的密钥。想想这里的蛮力攻击向量。
假设您拥有不需要且可以永久删除的密钥,这是一个好方法。
而设置 IdentitiesOnly 的方法可能是处理这个问题的首选方法!
小智 8
我添加到 ~/.ssh/config 这个:
Host *
IdentitiesOnly yes
Run Code Online (Sandbox Code Playgroud)
它默认启用选项 IdentitiesOnly=yes。如果您需要使用私钥连接,您应该使用选项 -i 指定它
小智 6
如果您收到以下 SSH 错误:
$ Received disconnect from host: 2: Too many authentication failures for root
Run Code Online (Sandbox Code Playgroud)
如果您的 .ssh 目录中存储了五个或更多 DSA/RSA 身份文件(在我的系统上为默认设置),并且命令行中未指定“-i”选项,则可能会发生这种情况。
ssh 客户端将首先尝试使用每个身份(私钥)登录,然后提示进行密码验证。但是,sshd 在五次错误登录尝试后断开连接(同样,默认值可能会有所不同)。
如果您的 .ssh 目录中有许多私钥,您可以使用“-o”可选参数在命令行中禁用“公钥身份验证”。
例如:
$ ssh -o PubkeyAuthentication=no root@host
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您有密码,并且只想使用密码登录,请按以下步骤操作。
要仅使用密码身份验证而不使用公钥,并且不使用有些误导的“键盘交互”(这是一个包含密码的超集),您可以从命令行执行此操作:
ssh -o PreferredAuthentications=password user@example.com
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
351450 次 |
最近记录: |