ssh隧道到计算机并创建另一个隧道第三个服务器

时间:2010-09-19 15:19:30

标签: ssh

我需要在我无法直接访问的服务器上做一些工作。我可以访问我的公司网络(通过VPN)。如果我在那个网络上,我可以直接访问服务器。但是,由于某些原因,当我在vpn上时,我无法直接访问服务器。

所以,我需要ssh到中间的ubuntu框中,然后从该框创建一个ssh隧道到服务器。

然后,我可以在我的笔记本电脑上完成我的工作并通过一个指向外部隧道(在我的ubuntu盒子上)的本地隧道发送到服务器。

但我不知道如何建立一个隧道来创建另一条到第三台服务器的隧道。

有什么想法吗?

谢谢, 斯科特

3 个答案:

答案 0 :(得分:1)

你想要达到什么目的?如果你只想在服务器上找到一个shell,然后ssh进入Ubuntu框,然后从那里ssh到服务器。

如果要访问服务器上的某些其他网络资源,则需要将服务器(无法访问它)的端口转发到Ubuntu框(您可以在其中)。看一下ssh中的-L选项。

编辑:

将文件复制到服务器:

tar c path/* | ssh ubuntuName 'ssh serverName "tar x"'

复制回来的东西:

ssh ubuntuName 'ssh serverName "tar c path/*"' | tar x

显然,您需要将ubuntuNameserverNamepath/*更改为您想要的内容。要使用rsync,您需要-E选项以及将一个ssh命令包装在另一个ssh命令中的相同技巧。在阅读你的评论后,我会说你的问题最常见的答案是诀窍是让ssh在目标机器上执行一个命令。您可以通过在机器名称后将命令指定为参数来执行此操作。如果使用ssh作为ssh的目标命令来执行,那么您将获得您正在寻找的两跳行为。然后,只需要使用引号,直到所有内容都正确转义。

答案 1 :(得分:0)

这只是一个双端口前锋。将端口从PC转发到ubuntu框,然后在ubuntu框中将这些目标端口转发到最终端点。已经有一段时间了,因为我已经完成了命令行ssh(被困在windows地狱:)),所以我不能给你需要的命令行。另一种可能性是使用SSH内置的SOCKS代理功能。

答案 2 :(得分:0)

要从第二台计算机上的本地计算机连接到第三台计算机上的特定端口,可以使用ssh -N -L选项:

ssh -N second_machine -L 8080:third_machine:8082

这会将第三台计算机上的端口8082映射到本地计算机上的端口8080(例如http:// localhost:8080 /)。