我有一个关于 ssh 隧道的问题。我读过这篇文章
我想让 X 转发工作并在家运行一些 X 应用程序并将它们显示在远程系统上:
ssh -X -R 5555:localhost:22 [email protected] -N
在远程:
ssh -X -p 5555 [email protected]
然后在家里:
//configure sshd to listen on 5555
ssh [email protected]
//here run some app
应该有效吗?
答案1
我画了一些草图
键入 ssh 隧道命令的机器称为»你的主人«。
介绍
当地的:
-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 并将其显示在您键入此命令的计算机上,例如您的工作计算机。
隐藏的电脑需要隧道
这是图片编号 3我的草图。很多时候,家庭计算机无法直接从互联网访问,因为它位于防火墙后面或隐藏在网络地址转换(来自路由器)。然后你可以使用隧道。
在你的蓝色的家庭计算机 ( yourhost
) 您输入:
ssh -R 5555:localhost:22 remoteuser@remotehost
图像中5555
绿色端口和粉色端口在哪里。22
如果您现在正在工作,remotehost
并连接到绿色端口5555
,您的连接将通过隧道/转发到您家用计算机的粉红色端口localhost
(即您的计算机)。蓝色的家用电脑本身)。现在您必须在工作计算机上输入:
ssh -X -p 5555 homeuser@localhost firefox
这将在您的家庭计算机 ( yourhost
) 上启动 Firefox 并将其显示在您键入此命令的计算机上,例如您的工作计算机 ( remotehost
)。
答案2
您需要指定要转发的远程显示。在远程:
DISPLAY=:0 ssh -X -p 5555 user@localhost # not sure why you used 192.168.1.2
转发:0
显示。
然后在该 shell 中(现在在您的家用机器上运行)运行:
echo "$DISPLAY"
找出转发的显示内容。这将类似于,这意味着您需要在端口 6010 上进行 TCP 连接以连接到远程计算机上的localhost:10
显示器(意味着连接到某些 Unix 域套接字,例如) 。:0
:0
/tmp/.X11-unix
然后,要使计算机上的应用程序显示在远程服务器的显示屏上,只需告诉他们使用localhost:10
:
DISPLAY=localhost:10 xlogo
例如。
请注意,这是隧道之上的隧道。