我画了一些草图
键入ssh tunnel命令的机器称为»您的主机«。
介绍
本地: -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
,并将所有连接尝试转发到本地 sourcePort
到onPort
机器上称为的端口forwardToHost
,可以从connectToHost
机器上访问该端口。
远程: -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
,并将所有连接尝试转发到远程 sourcePort
到onPort
名为的计算机上的端口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
)。