我无法使用 ssh 连接链来工作。
链:
我的 PC -> jumphost -> Bastion -> 我的应用 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 host 不起作用,想知道为什么?
我可以像这样逐步手动访问 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 配置的情况下在两个需要不同 key 的跳转主机上进行两次跳转?
最佳答案
对我有用的东西是 ssh 与 -J
选项:
-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 key 打开无密码连接(
PC->vpn
和 vpn -> vnc
和 vnc -> target
。我希望它会有所帮助,
亚雷克
关于ssh - 如何在命令行中 ssh 跳过两个跳转主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49349120/