![ssh-add 是否遵守 ssh_config 文件中所做的声明?](https://linux22.com/image/160513/ssh-add%20%E6%98%AF%E5%90%A6%E9%81%B5%E5%AE%88%20ssh_config%20%E6%96%87%E4%BB%B6%E4%B8%AD%E6%89%80%E5%81%9A%E7%9A%84%E5%A3%B0%E6%98%8E%EF%BC%9F.png)
背景
我使用 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_bull
gg-root
ss-root
IdentityFile
连接到时也会使用代理中的密钥任何其他主机未配置特定IdentityFile
的~/.ssh/config
.这意味着该配置限制了用于对特定主机进行身份验证的密钥,但显示的配置不会阻止“公牛密钥”与其他主机一起使用。