首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当通过ssh转发x11时,后台会发生什么?

当通过ssh转发x11时,后台会发生什么?
EN

Stack Overflow用户
提问于 2015-08-10 16:09:25
回答 1查看 470关注 0票数 2

当我在主机上运行一个xServer,然后使用ssh连接到另一台计算机时,我正试图熟悉幕后实际发生的事情,就像这样:ssh -Y user@machine。在这个场景中,我将在Windows上使用cygwin,将我的DISPLAY环境变量设置为:0.0,并在连接到远程计算机后运行一个GUI应用程序,该应用程序将显示在我的主机上。Mac将使用Quartz作为本地xServer (对不起,如果这个术语不正确,但希望您知道我的意思),并将使用ssh -X user@machine而不是-Y

这里的目标是拥有一个只负责安装和运行GUI应用程序的Docker容器。我将在我的主机上运行Docker容器,而GUI将从目标主机上弹出。

我已经通过ssh完成了这项工作,并在容器中手动启动了GUI应用程序。我只需要知道如何配置这个普通的Linux机器( Docker容器)来转发GUI。我认为理解ssh -Y 命令实际上是如何正确地设置转发是我所需要的一个缺失的谜题。--我对.Xauthority文件的存在有一个模糊的理解。我一点也不关心连接有多安全。等我开始工作后我会担心的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-11 15:33:10

X应用程序<-> X服务器

首先,X应用程序如何查找并连接到X服务器?

应用程序读取DISPLAY环境变量,以了解如何连接到X服务器。例如,值:0意味着它应该在/tmp/.X11-unix/X0中的unix套接字上连接,值hostname:5是指连接到计算机hostname的TCP端口6005

可以将X服务器配置为从应用程序请求身份验证。通常,当X服务器作为用户会话的一部分启动时,cookie将存储在用户主目录中的.Xauthority文件中,并且只能由用户读取。通过将cookie发送到X服务器,应用程序证明它具有读取用户文件的权限,因此也具有查看用户显示的权限。(该文件可以位于环境变量XAUTHORITY设置的不同路径中。)

ssh转发

当您将ssh发送到具有-X-Y参数的服务器时,ssh将读取本地X服务器的身份验证cookie,并将其发送到远程的ssh服务器。

在远程方面,ssh将使用该cookie创建临时身份验证文件,并将XAUTHORITY变量指向该文件。它将开始监听某些本地端口(例如6010),并将DISPLAY变量设置为指向它(例如,localhost:10)。如果您在该会话中启动任何图形应用程序,它将连接到ssh (认为它是X服务器),后者将把它隧道回本地。

在本地端,ssh将任何隧道连接转发到本地X服务器。(它使用DISPLAY变量找到了它。)

-X-Y之间的区别:远程计算机上的恶意根可以从其中的cookie文件中读取cookie,并使用它连接回X服务器。如果使用-X,ssh使用X服务器的安全扩展来拒绝应用程序的某些功能(比如截图或抓取键盘)。但是,有些应用程序可能需要这些应用程序才能工作,因此,如果您信任服务器,请使用-Y

替代方案

顺便说一句,如果网络是完全可信的(就像您的机器和虚拟机之间的虚拟网络),您可以完全省略ssh。您可以设置DISPLAY变量,以便远程应用程序通过TCP连接到本地X服务器(Quartz)。您只需在Quartz中启用侦听TCP并在两边设置cookie即可。这似乎是一个合理的教程:http://oroborosx.sourceforge.net/remotex.html

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

https://stackoverflow.com/questions/31924300

复制
相关文章

相似问题

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