我正在尝试设置一些通用选项来弹跳ssh连接。这是我的~/.ssh/config
文件,简称:
Host *%via
ProxyCommand ssh gateway -W $(echo %h | cut -d%% -f1) %p
Host gateway
HostName gateway.example.com
User username
ForwardAgent yes
IdentityFile keypathg
Host target
User username
HostName target.example.com
IdentityFile keypatht
当我利用*%via
利用Host
别名,我得到:
% ssh -vvv target%via
OpenSSH_5.9p1, OpenSSL 0.9.8y 5 Feb 2013
debug1: Reading configuration data /Users/myuser/.ssh/config
debug1: /Users/myuser/.ssh/config line 5: Applying options for *
debug1: /Users/myuser/.ssh/config line 12: Applying options for *%via
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/Users/myuser/.ssh/tmp/target%via_22_myuser" does not exist
debug2: ssh_connect: needpriv 0
debug1: Executing proxy command: exec ssh -A gateway -W $(echo target%via | cut -d% -f1):22
debug1: permanently_drop_suid: 501
debug1: identity file /Users/myuser/.ssh/id_rsa type -1
debug1: identity file /Users/myuser/.ssh/id_rsa-cert type -1
debug1: identity file /Users/myuser/.ssh/id_dsa type -1
debug1: identity file /Users/myuser/.ssh/id_dsa-cert type -1
ssh_exchange_identification: Connection closed by remote host
但是,如果我利用
% ssh target.example.com%via
我命中了目标服务器,但用户身份错误并且没有pubkey身份验证。
我认为,此时的问题是,这种弹跳方法是在利用时ForwardAgent
,通过我的ssh config / environment整体还是仅通过键。如果只是钥匙,前者可以某种方式利用吗?
我的ssh版本是5.9v1,网关是5.9v1,目标是5.3p1。我相信-W
是在5.4中引入的,但对于最后一行来说,这应该没关系吗?利用较老的学校nc
似乎没有什么不同。
我已经验证可以手动将ssh放入该行中的每个框。这样做表示未传递主机名别名信息,就像在网关上时一样,ssh target
但不能ssh target.example.com
。这适用于pubkey auth。网关和目标偶然具有相同的用户名,这就是为什么如果不推送配置该方法可以起作用的原因。
如果ForwardAgent
或类似的配置无法推送此信息,那么解决此问题的最明智的方法是在网关上使用此信息保留.ssh / config?