通过2个跳转服务器进行SSH端口转发

问题描述 投票:0回答:2

我正在尝试连接到防火墙后面的服务器。

对于此连接,我必须使用多个跳转服务器。 所以我 SSH

local
user1@jump1
user2@jump2
user3@server
。 我可以直接连接到服务器

ssh -J user1@jump1,user2@jump2 user3@server

我想在本地计算机上的 Sublime Text 和目标服务器上的

rmate
之间建立隧道连接。我按照 data36 上的说明进行操作。在描述中,用户只需使用

连接到一台服务器
ssh -R 52698:localhost:52698 user3@server

我还没有找到类似的服务器。有没有办法做到这一点?也许有人可以给我一个端口的例子。

我已经尝试过了

ssh  -R 52698:localhost:52698,52698:jump1:52698, 52698:jump2:52698, 52698:server:52698 -J user1@jump1,user2@jump2 user3@server

但这给了我错误:

错误的远程转发规范 52698:localhost:52698,52698:jump1:52698,52698:jump2:52698,52698:server:52698

名称

jump1
jump2
server
代表各自的 IP 地址。因此,在真正的
ssh
命令中,我使用 IP 地址而不是名称。

portforwarding ssh-tunnel jumphost
2个回答
2
投票

你想多了。端口转发并不是在每个连接上都进行跳转。您通过所有链路建立隧道,然后通过隧道转发您的端口。

ssh -J user1@jump1,user2@jump2 -R 52698:localhost:52698 user3@server

或者——甚至更好——将配置放入

~/.ssh/config
:

Host jump1
    Hostname 1.1.1.1
    User user1

Host jump2
    Hostname 2.2.2.2
    User user2
    ProxyJump jump1

Host server
    Hostname 3.3.3.3
    User user3
    ProxyJump jump2
    RemoteForward 52698

然后就

ssh server


如果需要,您可以向

Host
块添加其他必要的配置。如果服务器使用端口 8080,您可以将
Port 8080
放入其块中。或者添加一个额外的密钥文件什么的。

在带有

-J
的 CLI 上,您只能自定义每个跃点的用户、主机和端口:以逗号分隔的
[user@]host[:port]
列表。


0
投票

该命令不起作用的原因是

jump1
jump2
没有相应的
rmate
服务器侦听这些特定端口并在下一个服务器上转发,因此信号在
jump1
处消失。如果您在
jump1
jump2
上有 shell 帐户,您可以在每个帐户以及最后一个 rmate 框中
设置
server

理论上这应该可行,但我没有任何方法来测试它。如需更多帮助,您也可以尝试在官方Sublime Text论坛上发帖,看看是否有比我更有经验的人可以给您一些建议。

© www.soinside.com 2019 - 2024. All rights reserved.