由 IdentityFile 指定的 ssh 配置身份不会由 ForwardAgent 转发

由 IdentityFile 指定的 ssh 配置身份不会由 ForwardAgent 转发

我在一个环境中工作,我有多个环境的多个 ssh 密钥,所有这些都使用堡垒主机,这意味着可以 ssh 到任何环境中的任何盒子,这是一个两步跳跃,首先到堡垒,第二个到堡垒目标盒子,并且我的 ssh 身份必须全程随身携带。

我知道 ssh 和 .ssh/config 都可以选择将您当前的所有 ssh 身份转发到堡垒主机,以便您可以在那里重新使用它们:

ssh -A IPADDRESSForwardAgent

此外,我知道 .ssh/config 有一个IdentityFile选项,允许我根据我尝试连接的主机指定使用哪个 ssh 密钥。然而,我注意到的是,IdentityFile 选项使用的任何身份都不会由ForwardAgent- 我将其转发到堡垒主机,但如果没有我的密钥,我无法 ssh 到下一个盒子。

到目前为止,我能够完成此任务的唯一方法是手动添加我需要使用的身份ssh-add ~/.ssh/id_rsa[1-10],然后使用ForwardAgent或进行 ssh ssh -A。然而,当我需要在多个身份之间切换时,这可能会很痛苦。

有没有一种方法可以仅使用 ssh 配置文件来完成所有这些?

答案1

执行上述操作的一种更简洁的方法ProxyCommand是使用ProxyJump;你的 SSH 配置将如下所示:

Host bastion.host
  User user1
  IdentityFile ~/.ssh/id_bastion

Host remote.host
  User user2
  IdentityFile ~/.ssh/id_remote
  ProxyJump bastion.host 

答案2

你需要 :

IdentityFile ~/.ssh/id_bastion
AddKeysToAgent yes
ForwardAgent yes

查看man ssh_config | less +/AddKeysToAgent

答案3

您是否尝试过使用 ProxyCommand ?假设您想连接为[电子邮件受保护]通过透明地通过[电子邮件受保护]帐户。以下配置即可实现这一目标:

Host bastion.host
  User user1
  IdentityFile ~/.ssh/id_bastion

Host remote.host
  User user2
  IdentityFile ~/.ssh/id_remote
  ProxyCommand ssh bastion.host -W %h:%p 

此设置的另一个优点是它允许其他命令(例如 git、sshfs、rsync...)使用相同的凭据通过堡垒主机“直接”连接到 remote.host。

编辑:在您的设置中,每个主机共享相同的堡垒,因此您甚至可以在添加更具体的主机之前将 ProxyCommand 与通配符主机分开:

Host remote.*
  ProxyCommand ssh bastion.host -W %h:%p
Host remote.host1
  IdentityFile ...
Host remote.host2
   ....

相关内容