ssh - 如何在命令行中 ssh 跳过两个跳转主机

标签 ssh

我无法使用 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->vpnvpn -> vncvnc -> target

我希望它会有所帮助,
亚雷克

关于ssh - 如何在命令行中 ssh 跳过两个跳转主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49349120/

相关文章:

ssh - Github 操作 SSH 命令上的 libcrypto 出现错误

linux - 使用 ssh 远程执行脚本的安全方法

git - Git通过SSH推送失败,管道损坏

github - 如何通过 ssh 克隆?

python - 使用 ssh 时 bash 中缺少 'read' 提示?

perl - 文件处理

c - 我需要帮助来修改 pnscan

linux - SSH x 通过脚本转发/屏蔽

python - 如何使用 PyCharm 为远程 Python 解释器保留环境变量

ssh - Bamboo-SSH任务中SCP调用的正确格式