我已经多次尝试使用 putty 终端为用户 root@host 建立 SSH 连接。在这样做时,我多次指定了错误的凭据,然后我正确地指定了它们,然后在凭据被接受后,ssh 会话中断
“服务器意外关闭网络连接”。
这个错误是putty终端报的。当尝试从本地控制台 ssh root@localhost 时 - 它工作正常。当我从其他主机 ssh otheruser@host 时,它也可以正常工作。所以网络连接问题是无罪的。我想到的唯一错误是:“用户 root 的身份验证失败太多”,尽管 putty 报告了一个不同的错误。
问题是:如何从这种错误状态中恢复并让 putty 再次登录?重新启动 sshd 似乎没有帮助
小智 147
“用户 root 的太多身份验证失败”意味着超出了您的 SSH 服务器的MaxAuthTries 限制。发生这种情况是因为您的客户端正在尝试使用 /home/USER/.ssh/ 中存储的所有可能的密钥进行身份验证。
这种情况可以通过以下方式解决:
配置文件中的单个主机应如下所示:
Host example.com
IdentityFile /home/USER/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
您还可以设置用户,这样您就不需要在命令行中输入它并缩短长 FQDN,请参见此示例:
host short
IdentityFile /home/USER/.ssh/id_rsa
User someuser
HostName really-long-domain.example.com
Run Code Online (Sandbox Code Playgroud)
然后,您使用以下命令连接到真正的长域.example.com 服务器:
ssh short
Run Code Online (Sandbox Code Playgroud)
注意:如果你选择只使用第二个选项,并尝试使用 ssh example.com 你仍然会得到错误(如果那是什么把你带到这里),简短的版本不会给出错误,你也可以同时使用选项,以便您可以 ssh anyuser@example.com 而不会出现错误。
小智 130
如果您收到以下 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 目录中有许多私钥,您可以Public Key Authentication
使用-o
可选参数在命令行中禁用。
例如:
$ ssh -o PubkeyAuthentication=no root@host
Run Code Online (Sandbox Code Playgroud)
小智 21
在远程机器上打开 /etc/sshd_config 并更改值
MaxAuthTries 30
当您安装了多个密钥或打开多个连接时,这是典型的问题。服务器逐步检查每个密钥,如果 MaxAuthTries 设置在 3 上,那么在第 3 次尝试后,您将断开连接。典型的 ssh 安全性。
我建议您在连接到远程机器时使用详细模式来分析问题。
ssh -v -p port_number 用户@服务器名
像这个论坛上的大多数人一样猜测是错误的,而且是在浪费时间。首先尝试分析问题,收集信息,然后提问。
玩得开心。
Nin*_*xor 19
对我来说,这个问题是通过为我连接的主机创建以下 ssh_config 来解决的。
(~/.ssh/config)
Host example
HostName example.com
User admin
IdentityFile ~/path/to/ssh_key_rsa
IdentitiesOnly=yes
Run Code Online (Sandbox Code Playgroud)
出现问题是因为我的~/.ssh
文件夹中有太多 ssh 密钥,比如 16 个左右。如果配置中没有这两个IdentityFile
ANDIdentitiesOnly
指令,我的机器显然~/.ssh
在尝试正确的 IdentityFile 之前尝试输入所有密钥并达到最大尝试次数。
Ano*_*ous 13
这是不好的做法。只需在远程设备上拥有一个普通用户并使用它通过 ssh 连接,然后使用 su/sudo 获得 root 访问权限。
小智 8
要暂时解决这个问题,直到事情可以如其他地方所述完全解决,您可以重置用户的 PAM 计数,以便他们可以重试:
pam_tally --reset --user <USERNAME>
pam_tally2 --reset --user <USERNAME>
Run Code Online (Sandbox Code Playgroud)
我会建议您,如 Anon 上面发布的,使用另一个用户获得 ssh 访问权限,然后使用该su
命令获得root
访问权限。
另外,还要确保启用PermitRootLogin
了在/etc/ssh/sshd_config
服务器上的文件。
小智 6
我通过运行以下命令在我的系统中解决了这个问题:
eval $(ssh-agent)
ssh-add ~/.ssh/keyname
Run Code Online (Sandbox Code Playgroud)
然后在远程机器上尝试 ssh
归档时间: |
|
查看次数: |
351622 次 |
最近记录: |