ssh-add 是否遵守 ssh_config 文件中所做的声明?

ssh-add 是否遵守 ssh_config 文件中所做的声明?

背景

我使用 4096 位 RSA 密钥对来授权访问我的服务器。通过ssh_config我所指的文件~/.ssh/config/etc/ssh/ssh_config.

这是我的样子~/.ssh/config

Host gg-root
    HostName 172.47.95.122

Host ss-root
    HostName 172.47.95.123

# Common for my servers
Host gg-root ss-root
    User root
    Port 32001
    IdentitiesOnly yes
    IdentityFile ~/.ssh/id_rsa_bull

# Common for all
Host *
    AddKeysToAgent yes

现在,我可以使用以下命令通过 SSH 连接到我的服务器(无需任何进一步的配置):

ssh gg-root
ssh ss-root

问题是,我需要将私钥添加~/.ssh/id_rsa_bull到系统的 SSH 代理中,以便其他应用程序(例如我用于 SFTP 的 FileZilla)可以轻松使用它。 (特别是因为我不喜欢 FileZilla 需要未加密的私钥.ppk。)

所以,我要么每次运行这个命令:

ssh-add ~/.ssh/id_rsa_pepper

或者把这个放在我的~/.profile

ssh-add ~/.ssh/id_rsa_pepper > /dev/null 2>&1

问题

当我使用 将密钥添加到系统的 SSH 代理时,它是否遵循我在文件ssh-add中所做的声明?ssh_config具体来说,它是否确保~/.ssh/id_rsa_pepper仅用于172.47.95.{122,123}

根据我对所读内容的解释,我相信应该如此。如果我错了,请告诉我应该如何向系统的 SSH 代理添加私钥,其中所述私钥仅用于指定的主机?


编辑:基于答案

这就是我~/.ssh/config现在的样子:

Host gg-root
    HostName 172.47.95.122

Host ss-root
    HostName 172.47.95.123

# Common for my servers
Host gg-root ss-root
    User root
    Port 32001
    IdentityFile ~/.ssh/id_rsa_bull

# Common for all
Host *
    AddKeysToAgent yes
    IdentitiesOnly yes

答案1

ssh-add不尊重配置文件。它只是将密钥添加到代理中。

客户端在连接到或 时ssh会尝试使用密钥(由于配置)。如果该密钥在代理中可用,则将从那里使用该密钥,否则将从文件中使用该密钥(如果该密钥有与之关联的密码,则可能必须提供密码)。~/.ssh/id_rsa_bullgg-rootss-rootIdentityFile

连接到时也会使用代理中的密钥任何其他主机未配置特定IdentityFile~/.ssh/config.这意味着该配置限制了用于对特定主机进行身份验证的密钥,但显示的配置不会阻止“公牛密钥”与其他主机一起使用。

相关内容