我无法通过ssh one liner获得连接链。
链: 我的电脑 - > jumphost - >堡垒 - >我的app X主机(与Bastion共享子网)
-Jumphost期待私钥A
-Bastion和X主机都期望私钥B
my pc> ssh -i /path_to_priv_key_for_X/id_rsa -o StrictHostKeyChecking=no -o
"ProxyCommand ssh -p 22 -W %h:%p -o \"ProxyCommand ssh -p 24 -W %h:%p
-i /path_to_key_jump/id_rsa jumphostuser@jumphostdomain\" -i
/path_to_bastion_key/id_rsa bastionuser@ip_to_bastion" myappuser@subnet_ip
上面不起作用,但是
ssh -i /path_to_bastion_key/id_rsa -o "ProxyCommand ssh -p 24 -W
%h:%p -i /path_to_key_jump/id_rsa jumphostuser@jumphostdomain"
bastionuser@ip_to_bastion
有效,所以我可以通过一个班轮访问堡垒,但在命令链中添加app x主机不起作用,不知道为什么?
我可以像这样一步一步手动访问myapp X主机
mypc> ssh -p 24 -i path_to_key_jump/id_rsa jumphostuser@jumphostdomain
jumphost> ssh -i /path_to_bastion_key/id_rsa bastionuser@ip_to_bastion
bastion> ssh myappuser@subnet_ip
myapp>
如何在两个跳转主机上进行命令行两跳,两个跳转主机都需要不带ssh配置的不同密钥?
答案 0 :(得分:1)
使用-J
选项的ssh可以为我很好地工作:
-J destination Connect to the target host by first making a ssh connection to the jump host described by destination and then establishing a TCP forwarding to the ultimate destination from there.
事实上,我是关于它的功能,但我很长时间没有意识到:
Multiple jump hops may be specified separated by comma characters.
因此,像PC -> jump server 1 -> jump server 2 -> target server
这样的多跳操作(在我的示例中:PC -> vpn -> vnc -> ece server
可以用一个组合完成:
$ ssh -J vpn,scs694@tr200vnc rms@tr001tbece11
当然,最方便的是使用ssh键来打开无pwd的连接(PC->vpn
和vpn -> vnc
和vnc -> target
。
我希望它会有所帮助, Jarek