首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Xauth和DISPLAY变量

关于Xauth和DISPLAY变量
EN

Unix & Linux用户
提问于 2020-09-30 21:02:57
回答 1查看 8.3K关注 0票数 2

我想了解xauthDISPLAY变量以及ssh -X如何自动生成DISPLAY变量以及为什么选择这些值?我已经看到,在某些地方手动设置DISPLAY也是不正确的。

这个输出的每一列意味着什么?

代码语言:javascript
复制
[root@serverdg ~]# xauth list
serverdg2/unix:11  MIT-MAGIC-COOKIE-1  87b515cf92e356b7702d3afd721f7fe1
serverdg2/unix:10  MIT-MAGIC-COOKIE-1  e8f9bfb5abac8757f4864656ce4f9bd1
serverdg/unix:12  MIT-MAGIC-COOKIE-1  7270008abd9f949a9b1af76c7742da9e
serverdg/unix:11  MIT-MAGIC-COOKIE-1  bb2f1768b445f372e5975d728579517e
serverdg/unix:10  MIT-MAGIC-COOKIE-1  475b9a6cbc7567b956511d5d2d27950b

为什么ssh -XDISPLAY变量生成一个10.0值,如本例所示?

代码语言:javascript
复制
[root@serverdg ~]# echo $DISPLAY
localhost:10.0

我所知道的是,如果我将当前的用户用户更改为另一个用户(su - user),以便能够使用X,则需要复制xauth listDISPLAY的值,因为这些值是在使用ssh进行新登录时生成的。

EN

回答 1

Unix & Linux用户

发布于 2020-10-01 21:46:10

DISPLAY环境变量告诉应用程序如何连接X服务器。X服务器是系统中在屏幕上显示窗口的部分。显示器是可以在上面显示窗口的东西。

unix系统可以有多个显示器,例如在多个虚拟控制台上,或者在多个实控制台上,或者因为某些显示器是虚拟,或者因为一些显示器是通过网络访问的。ssh -X将连接转发到网络上的远程显示。

每个显示器都有一个数字。这些数字的目的只是为了区分显示器。:0是显示号0,:1是显示号,等等。使用显示号的方法之一是如何允许应用程序连接到X服务器:它用于计算套接字文件 (/etc/.X11-unix/X0,…)的名称。或X服务器侦听的TCP端口号(6000加显示号)。

显示号后的.0部件是一个过时的概念。它是一个“屏幕”数字,其中一个显示器可以由多个屏幕组成,一个窗口被绑定到一个特定的屏幕上。在现代系统中,X服务器只显示一个屏幕,并允许应用程序窗口在监视器之间移动。:NUMBER.0.与:NUMBER等价。

冒号之前可以有一个机器名。这允许应用程序与X服务器之间的TCP通信。这种通信不受网络窥探和中间人攻击的保护,因此在真正的网络上基本上是不可取的,但在某些情况下可能有用,例如在运行在同一台主机上的虚拟机之间的网络上。实际上,如果两者都能工作,那么localhost:NUMBER在功能上就相当于:NUMBER (但是:NUMBER可能在幕后使用一种更快的通信机制,而且只有其中一个可以工作,因为并不是所有的X服务器都在本地或通过TCP侦听;在技术上甚至可以让不同的服务器监听localhost:NUMBER:NUMBER,但这将是某个地方的错误配置)。

创建X显示器的实体必须选择显示号。(这可能是通过让服务器来决定的,但是如果是这样的话,它需要找出服务器选择了什么号码才能为应用程序设置DISPLAY。)大多数程序选择最低可用的数字,或者是在某些配置文件中硬编码的数字。为了给物理显示留出空间,SSH只选择从10开始的数字。

手动设置DISPLAY通常是不正确的,因为只有创建显示的实体才能选择数字。例如,在ssh -X的例子中,这就是SSH本身。如果手动设置DISPLAY,则可能弄错了号码,或者可能会为不存在的显示做广告(例如,如果X11转发被拒绝)。

其他用户,或者其他机器上的用户,可以尝试连接到不是他们自己的X显示器。因为X是为允许远程连接而设计的,所以它不能仅仅依赖unix用户。所以X有一个授权机制:当应用程序想要连接到X显示器时,它必须证明它是授权的。在现代世界中,只有一种授权机制,即MIT-MAGIC-COOKIE-1格式的“cookie”(16字节,以十六进制表示)。cookie是一个长的随机字符串,当服务器启动并存储在只有合法用户可以读取的文件中时,就会生成该字符串。为了连接到X显示器,应用程序必须将cookie值发送到服务器。如果cookie值不正确,服务器将拒绝连接。

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

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

复制
相关文章

相似问题

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