ssh:通过远程服务器到另一台服务器的隧道

Ste*_*mer 5 ssh

remote我可以使用端口 4000 上的用户 ssh 访问我的工作网络:

ssh remote@123.123.123.123 -p 4000
Run Code Online (Sandbox Code Playgroud)

使用 ssh 密钥进行身份验证

然而,我目前在中国,连接非常不稳定。

我们在香港有一个云服务器,我们可以通过它进行隧道连接,从而提供更稳定的连接

foo我可以使用相关密码以用户身份登录。

ssh foo@100.100.100.100
Run Code Online (Sandbox Code Playgroud)

如何将两者放在一起,以便我可以通过 ssh 从本地计算机以 as user 身份打开交互式shell123.123.123.123:4000会话?remote100.100.100.100:22foo

编辑:

我无法对以下答案发表评论,因为 Javascript 在中国已被屏蔽,并且评论使用 Javascript。

直接隧道不起作用,因为身份验证是使用我的 ssh 密钥完成的。

当我启动 ssh 会话时remote@123.123.123.123身份foo@100.100.100.100验证失败

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Run Code Online (Sandbox Code Playgroud)

我以某种方式需要我的 ssh 会话看起来像是来自我的本地主机,带有我的 ssh 密钥,但要通过隧道传输foo@100.100.100.100

Erl*_*aff 8

你应该能够像这样把它们放在一起

ssh -t foo@100.100.100.100 ssh remote@123.123.123.123 -p 4000
Run Code Online (Sandbox Code Playgroud)

因为 ssh 命令允许您指定要在远程服务器上运行的命令。

编辑:

如果您只有本地 ssh 密钥(密钥123.123.123.123不在云服务器上),您应该能够添加-A转发身份验证,因此命令将是

ssh -At foo@100.100.100.100 ssh remote@123.123.123.123 -p 4000
Run Code Online (Sandbox Code Playgroud)

请注意,要使其工作,您需要ssh-agent在本地运行,并且您的密钥必须使用注册ssh-add(您可以使用它ssh-add -L来检查您的密钥是否可用于 ssh 代理)。