首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ssh隧道解释

ssh隧道解释
EN

Unix & Linux用户
提问于 2013-08-17 10:49:24
回答 2查看 1.1K关注 0票数 7

我有个关于ssh隧道的问题。我读过这篇文章

  • http://www.popcornfarmer.com/2009/01/ssh-tunneling-tutorial/

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

代码语言:javascript
复制
 ssh -X -R 5555:localhost:22 user@remoteserver.com -N

遥控器上:

代码语言:javascript
复制
 ssh -X -p 5555 user@192.168.1.2

然后在家里:

代码语言:javascript
复制
 //configure sshd to listen on 5555
 ssh user@remoteserver.com
 //here run some app

它应该有效吗?

EN

回答 2

Unix & Linux用户

发布于 2014-03-14 16:03:49

我画了一些草图

输入ssh隧道命令的机器称为“您的主机”。

Introduction

  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,并将所有连接尝试转发到本地sourcePort到名为forwardToHost的计算机上的端口onPort,这可以从connectToHost机器到达。
  2. remote:-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到名为forwardToHost的计算机上的端口onPort,这可以从本地计算机到达。

您的示例

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

启动X应用程序而不使用隧道

你能简单地从工作电脑到家里的电脑吗?如果是这样的话,当您坐在工作计算机上并希望启动一个在您的家用计算机上运行但在您的工作计算机上显示的X应用程序时,您必须键入(在工作计算机上):

ssh -X homeuser@homecomputer firefox

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

隐藏计算机需要隧道

这是我素描的第三张图片。很多时候,家庭计算机无法从互联网直接到达,因为它位于防火墙后面或通过NAT (从路由器)隐藏起来。然后你可以用隧道。

在蓝色家用计算机(yourhost)上键入:

代码语言:javascript
复制
ssh -R 5555:localhost:22 remoteuser@remotehost

其中5555是绿色端口,22是图像中的粉红色端口。

如果您现在正在工作,在remotehost,并连接到绿色端口5555,则您的连接将被隧道/转发到家庭计算机的localhost (即蓝色家庭计算机本身)的粉红色端口。现在你必须在你的工作电脑上打字:

代码语言:javascript
复制
ssh -X -p 5555 homeuser@localhost firefox

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

票数 8
EN

Unix & Linux用户

发布于 2013-08-17 19:59:28

您需要指定要转发的远程显示。遥控器上:

代码语言:javascript
复制
DISPLAY=:0 ssh -X -p 5555 user@localhost # not sure why you used 192.168.1.2

转发:0显示。

然后在这个shell中(现在在您的主机上运行),运行:

代码语言:javascript
复制
echo "$DISPLAY"

若要查找转发显示的内容,请执行以下操作。这将类似于localhost:10,这意味着您需要在端口6010上进行TCP连接才能连接到远程计算机上的显示:0 (:0的意思是连接到/tmp/.X11-unix之类的Unix域套接字)。

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

代码语言:javascript
复制
DISPLAY=localhost:10 xlogo

例如。

注意,那是隧道上的隧道。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/87138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档