这是我的标准工作 ssh 配置,每个人都使用:
host go
User user
ProxyJump otherHostname
StrictHostKeyChecking=no
UserKnownHostsFile=/dev/null
IdentityFile ./ssh/key
ProxyCommand ssh -i ~/.ssh/key -W %h:%p otherUser@OtherHostname
这proxyCommand
部分让我感到困扰,因为 ssh 配置的重点是没有使用命令。
命令参数是否有选项意味着配置中不会有 ssh 命令?
proxyCommand 使用该命令的 IdentityFile 和 ProxyJump 值:
ssh -i ~/.ssh/key -W %h:%p otherUser@OtherHostname
换句话说:
ssh -i IdentityFile -W %h:%p differe tUser@ProxyJump
答案1
简化这种类型的选项ProxyCommand
是ProxyJump
*。使用并定义in部分ProxyJump otherHostname
的所有自定义选项。 (如果有,请注意:otherHostname
Host otherHostname
Host *
对于每个参数,将使用第一个获得的值.)
但你ProxyJump
已经在使用了。手册指出:
请注意,此选项将与该选项竞争
ProxyCommand
- 无论先指定哪个选项,都将阻止另一个选项的后续实例生效。
(来源:man 5 ssh_config
)
你ProxyJump
是第一,它就会赢。这意味着你已经替换了ProxyCommand
,该行ProxyCommand
没有用。
* 我所说的“这种类型”是指ssh -W %h:%p …
。一般来说ProxyCommand
是比较强大的,命令可以是任何东西,不一定用于实际代理。例如限制带宽是可能的)。