gpt4 book ai didi

user-interface - 通过SSH转发x11时,后台会发生什么?

转载 作者:行者123 更新时间:2023-12-02 13:51:32 27 4
gpt4 key购买 nike

当我在主机上运行xServer,然后使用ssh连接到另一台计算机时,我试图熟悉幕后的实际情况,例如ssh -Y user@machine。在这种情况下,我将在Windows上使用cygwin,并将DISPLAY环境变量设置为:0.0,并在连接到远程计算机后运行一个GUI应用程序,该应用程序将显示在主机上。 Mac会在本地xServer上使用Quartz(很抱歉,如果该术语不正确,但希望您理解我的意思),并且将使用ssh -X user@machine而不是-Y

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

我已经通过ssh进行了这项工作,并在容器中手动启动了GUI应用程序。我只需要知道如何配置此普通Linux计算机(Docker容器)来转发GUI。 我认为了解ssh -Y命令实际上在正确设置转发功能是我需要的缺失拼图。 我对.Xauthority文件的存在有模糊的了解。我完全不关心连接的安全性。我会在上类后担心这一点。

最佳答案

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

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

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

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

SSH转发

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

在远程方面,ssh将使用该cookie创建临时身份验证文件,并将XAUTHORITY变量指向该文件。它将开始在某些本地端口上侦听(例如6010),并将DISPLAY变量设置为指向它(例如localhost:10)。如果您在该 session 中启动任何图形应用程序,它将连接到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

关于user-interface - 通过SSH转发x11时,后台会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31924300/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com