Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ssh隧道到一台计算机,并创建另一个隧道到第三台服务器_Ssh - Fatal编程技术网

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

ssh隧道到一台计算机,并创建另一个隧道到第三台服务器,ssh,Ssh,我需要在没有直接访问权限的服务器上做一些工作。我确实可以访问我的公司网络(通过vpn)。如果我在那个网络上,我可以直接访问服务器。但是,由于某些原因,当我在vpn上时,我无法直接访问服务器 因此,我需要ssh到一个中间ubuntu框中,然后创建一个从该框到服务器的ssh隧道 然后,我可以在我的笔记本电脑上完成我的工作,并通过一个本地隧道将其发送到服务器,该隧道指向一个外部隧道(在我的ubuntu盒上) 但是我不知道如何做一个隧道,创建另一个到第三台服务器的隧道 有什么想法吗 谢谢, 斯科特这只是

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

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

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

但是我不知道如何做一个隧道,创建另一个到第三台服务器的隧道

有什么想法吗

谢谢,
斯科特

这只是一个双端口前锋。将端口从PC转发到ubuntu框,然后在ubuntu框上将这些目标端口转发到最终端点。我已经有一段时间没有完成命令行ssh(被困在WindowsHell:)了,所以我无法提供您需要的命令行。另一种可能是使用SSH中内置的SOCKS代理功能

你想达到什么目的?如果您只想访问服务器上的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

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

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

ssh -N second_machine -L 8080:third_machine:8082

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

我需要使用中介将文件从笔记本电脑传输到服务器。有很多方法,可能最适合的方法是使用rysnc和一个自定义shell命令,该命令可以登录到两个系统。最简单的方法是使用焦油。我会在答案中加上一个例子。