小编Sco*_*ley的帖子

如何强制 SSH 忽略“主机 *”中列出的特定主机的 IdentityFile?

我的 SSH 配置文件设置为使用该Host *部分中的特定 IdentityFile作为默认密钥。对于一个特定的主机,我想提供一个不同的密钥(并且只有那个密钥,而不是默认密钥)。

我的 ~/.ssh/config 文件如下所示:

Host specialhost
HostName specialhostname.mydomain.com
IdentityFile %d/.ssh/special-key
LogLevel debug
IdentitiesOnly yes 

Host *
IdentityFile %d/.ssh/regular-key
IdentitiesOnly yes 
Run Code Online (Sandbox Code Playgroud)

不管我做什么,或者不管配置文件中部分的顺序如何,我的 SSH 客户端(OS X OpenSSH_6.2p2)首先提供“常规密钥”(服务器接受它,这不是我想要的)。

ssh_config 手册页说明了以下内容IdentityFile

配置文件中可以指定多个身份文件;所有这些身份都将依次尝试。

我不清楚它所指的“序列”,因为该Host *部分中列出的 IdentityFile总是首先提供,即使“specialhost”列在它之前(如上例所示)。这里IdentitiesOnly建议的技巧似乎只与 ssh-agent 提供的密钥相关。一些其他类似的问题还没有得到任何答案。

我想在该Host *部分中保留常规键,因为我将该键与许多其他主机一起使用,并且我不想IdentityFile在每个主机条目中复制该键。

有什么方法可以强制 SSH 仅使用 SSH 配置提供“特殊密钥” (并且无需将我的 IdentityFile 指令复制到所有其他主机)?我可以通过从该Host *部分中取出密钥,将它们添加到代理,然后使用IdentitiesOnly yesfor specialhost来了解如何实现这一点,但我真的更愿意避免使用 ssh-agent,除非没有其他方法。

ssh openssh ssh-keys

6
推荐指数
1
解决办法
2977
查看次数

标签 统计

openssh ×1

ssh ×1

ssh-keys ×1