SSH隧道解释


8

我有关于SSH隧道的问题。我已经读过这篇文章

我想使X转发工作并在家运行一些X应用程序,并将它们显示在远程系统上:

 ssh -X -R 5555:localhost:22 user@remoteserver.com -N

在远程:

 ssh -X -p 5555 user@192.168.1.2

然后在家里:

 //configure sshd to listen on 5555
 ssh user@remoteserver.com
 //here run some app

应该行吗?


请尝试一下,而不是询问它是否可以工作。
Wutaz 2013年

是的,总是最好尝试一下,然后如果不起作用,问为什么。
slm

听起来像是在向后做..“正常”是在遥控器中运行并在本地显示。如果要在远程显示,请告诉我们有关您的网络的信息,这可能很简单,甚至不需要ssh。
Skaperen 2015年

Answers:


9

我画了一些草图

键入ssh tunnel命令的机器称为»您的主机«

从本地开始的ssh隧道


从远程开始的ssh隧道

介绍

  1. 本地: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHost意思是:用ssh连接到connectToHost,并将所有连接尝试转发到本地 sourcePortonPort机器上称为的端口forwardToHost,可以从connectToHost机器上访问该端口。

  2. 远程: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHost表示:使用ssh连接到connectToHost,并将所有连接尝试转发到远程 sourcePortonPort名为的计算机上的端口forwardToHost,可以从本地计算机访问该端口。

你的例子

好吧,如果您只想使X转发工作,即在家里的计算机上运行一些X应用程序,并将它们显示在远程系统上(我们称之为工作计算机,因为它可能在您的工作场所),那么您可能根本不需要ssh隧道。

没有隧道的情况下启动X应用程序

您可以简单地从工作计算机切换到家用计算机吗?如果是这样,当您坐在工作计算机上并想要启动运行在家用计算机上显示在工作计算机的X应用程序时,您必须输入(在工作计算机上):

ssh -X homeuser @ homecomputer firefox

这将在您的家用计算机上启动firefox,并将其显示在您键入此命令的计算机上,例如您的工作计算机。

隐藏的计算机需要隧道

这是我的草图的图像编号3。很多时候,家用计算机无法直接从Internet进行访问,因为它位于防火墙后面或通过NAT隐藏(从路由器)。然后,您可以使用隧道。

在您的蓝色家用计算机(yourhost)上输入:

ssh -R 5555:localhost:22 remoteuser@remotehost

图像中5555的绿色端口和22粉红色端口在哪里。

如果您现在在工作,在remotehost并连接到绿色端口5555,则您的连接将通过隧道传输/转发到家用计算机的粉红色端口localhost(即蓝色家用计算机本身)。现在,您必须在工作计算机上键入:

ssh -X -p 5555 homeuser@localhost firefox

它将在您的家用计算机(yourhost)上启动firefox,并将其显示在您键入此命令的计算机上,例如您的工作计算机(remotehost)。


1

您需要指定要转发的远程显示。在远程:

DISPLAY=:0 ssh -X -p 5555 user@localhost # not sure why you used 192.168.1.2

转发:0显示。

然后在该外壳程序(现在在您的家用计算机上运行)中运行:

echo "$DISPLAY"

找出什么是转发的显示。那将是类似的localhost:10意思,这意味着您需要在端口6010上进行TCP连接以连接到:0远程计算机上的显示器(:0意味着以类似的方式连接到某些Unix域套接字/tmp/.X11-unix

然后,要让计算机上的应用程序显示在远程服务器的显示屏上,只需告诉他们使用localhost:10

DISPLAY=localhost:10 xlogo

例如。

请注意,那是一条穿越隧道的隧道。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.