如果我做:
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 条目