如何使用 SSH 配置通过 jumphost 直接 SSH 到目标,而无需额外的 ssh 命令

如何使用 SSH 配置通过 jumphost 直接 SSH 到目标,而无需额外的 ssh 命令

如果我做:

ssh -J jumphost.example.com target.example.com

我最终立即登录到“目标”。

如果我使用这个 ssh 配置文件,使用较新的 ssh-7.3 跳转配置:

Host jump 10.1.*, targets*, *.example.com
  HostName jumphost.example.com
  IdentitiesOnly yes
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

我最终登录的是“jumphost”,而不是“target”

他们的钥匙串是为 Mac 设计的,我没有用它测试过并且没有什么区别,但是为了以防万一我还是想把它留下来。

答案1

您最终登录到跳转主机,因为您的配置明确表示忽略您指定的主机名并登录到跳转主机。

  HostName jumphost.example.com

HostName覆盖命令行上指定的主机名。

如果你尝试自动使用跳转主机而不必在 ssh 命令行上指定它,则正确的配置文件选项是ProxyJump。例如:

Host everything, behind, jumphost, *.example.com
  ProxyJump jumphost.example.com

现在你只需奔跑ssh target.example.com便可穿过跳跃主机。

答案2

问题在于,Host 定义将 jumphost.example.com 和 target.example.com 同时作为别名,然后在两种情况下都将 HostName 设置为 jumphost.example.com。

我建议在 Host 命令后面创建别名,而不是完全限定域名,然后为每个命令创建一个 Host 条目

相关内容