SSH 使用相同的配置发送不同的密钥

SSH 使用相同的配置发送不同的密钥

我已经问过了为什么有时无法登录SSH的问题。当时我不知道为什么。但是,我写信给服务器管理员,他告诉我连接被 sshguard 阻止。此外,他还向我发送了我的登录尝试列表(sudo grep publickey\ for\ <myusername> /var/log/auth命令输出)。它看起来像这样:

.
.
.
May 12 21:38:16 boss sshd[3003]: Failed publickey for <myusername> from
<myip> port 24057 ssh2: RSA
SHA256:hqddgd...VHhFM
May 12 21:38:16 boss sshd[3003]: Failed publickey for <myusername> from
<myip> port 24057 ssh2: RSA
SHA256:1NwYXJ66...+U5MqJ0
May 12 21:38:21 boss sshd[3003]: Accepted publickey for <myusername> from
<myip> port 24057 ssh2: RSA
SHA256:A6uQ/jb...I9UjXzc
May 12 21:39:29 boss sshd[3151]: Failed publickey for <myusername> from
<myip> port 23837 ssh2: RSA
SHA256:hqddgd...VHhFM
May 12 21:39:30 boss sshd[3151]: Failed publickey for <myusername> from
<myip> port 23837 ssh2: RSA
SHA256:1NwYXJ66...+U5MqJ0
.
.
.

每当我尝试登录时,我都会按顺序发送带有校验和的密钥:hqddgd...VHhFM、1NwYXJ66...+U5MqJ0、A6uQ/jb...I9UjXzc。第三次我的连接总是被接受。我不知道这是否是巧合,但我在 ~/.ssh/ 目录中恰好有三个密钥。另外,~/.ssh/config 文件如下所示:

Host <server to which I want to log in>
    HostName <nice domain>
    User <myusername>
    IdentityFile ~/.ssh/<myusername>

Host <another server>
    HostName <nice domain>
    User <another username>
    IdentityFile ~/.ssh/<another username>

为什么会发生这种情况?

答案1

来自 man ssh_config:
IdentitiesOnly
指定 ssh(1) 应该仅使用 ssh_config 文件中显式配置的身份验证身份和证书文件或在 ssh(1) 命令行上传递的身份验证身份和证书文件,即使 ssh-agent(1) 或 PKCS11Provider 提供更多身份。该关键字的参数必须是 yes 或 no(默认值)。此选项适用于 ssh-agent 提供许多不同身份的情况。

只需尝试将其添加到您的 ~/.ssh/config 中:

Host <server to which I want to log in>
    HostName <nice domain>
    User <myusername>
    IdentitiesOnly=yes
    IdentityFile ~/.ssh/<myusername>

相关内容