ssh 如何选择正确的密钥来使用?

ssh 如何选择正确的密钥来使用?

如何ssh-agent了解应该为哪个远程服务器使用哪个密钥?

我遇到过以某种方式涉及该主题的不同问题和帖子,但我仍然不清楚。

我发现,如果您想使用不同的 ssh 密钥,您需要使用-i选项并指定所需密钥的路径,或者您可以设置身份文件,指定哪个主机要使用哪个密钥对。

但这是否意味着默认情况下ssh-agent只能使用一对密钥,并且会尝试将其用于所有远程服务器?

答案1

但这是否意味着默认情况下ssh-agent只能使用一对密钥,并且会尝试将其用于所有远程服务器?

默认情况下,ssh-agent将使用添加到其中的所有密钥来连接所有服务器。您可以像ssh_config其他答案中一样限制密钥。

密钥有指纹,但在公钥认证的第一阶段,仅根据服务器列表验证公共部分,如果不匹配,则跳过认证(通常转为其他密钥或密码认证)。

答案2

SSH 支持~/.ssh/config文件允许你为不同的主机指定不同的密钥。因此你可以

Host github.com
    IdentityFile ~/.ssh/github.key
Host example.com
    IdentityFile ~/.ssh/example.key

有一个 这里有关于此功能的好教程。

答案3

“密钥”(没有双关语的意思)基于指纹,具体如下:RFC4716. 正如 ssh 的手册页中解释的那样:

When connecting to a server for the first time, a fingerprint of the
server's public key is presented to the user (unless the option
StrictHostKeyChecking has been disabled).  Fingerprints can be determined
using ssh-keygen(1):

           $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

If the fingerprint is already known, it can be matched and the key can be
accepted or rejected.

用 ASCII 码来概括就是指纹识别解释选择/使用哪个密钥:

ssh-keygen yourfingerprint
you ssh --> server (stores your fingerprint)
you ssh --> millions of other servers
you ssh initial server --> server --> Have I seen this fingerprint before?

添加

因为我太早按下回车键,所以指纹存储在:

~/.ssh/known_hosts

相关内容