从https://unix.stackexchange.com/a/17278/674
如果你运行
ssh -X localhost
,你应该看到$DISPLAY
(可能)localhost:10.0
。对比:0.0
,这是未通过 SSH 连接时的值。 (该.0
部分可以省略;它是屏幕编号,但是多个屏幕很少使用。)您可能会遇到两种形式的 X 显示:
- 本地显示,之前没有任何内容
:
。- TCP 显示,在
:
.通过
ssh -X localhost
,您可以访问X 服务器通过两个显示器,但应用程序将使用不同的方法::NUMBER
通过本地套接字和共享内存访问服务器,而HOSTNAME:NUMBER
通过 TCP 访问服务器,速度较慢并且禁用某些扩展。
X服务器、显示器、屏幕之间有什么联系和区别?
“X服务器通过双方显示”是什么意思?一个“显示器”就意味着一台显示服务器,即一台X服务器,那么两个“显示器”就意味着两台显示服务器,即两台X服务器。
“多屏”是什么意思? “屏幕”是指显示监视器吗?
谢谢。
答案1
我会给你一个直观的例子来解释X11的基础知识以及后台发生的事情:
在此示例中,您的主机 A 上有一个本地 X11 服务器,有两个“屏幕”。通常只有一台服务器带有一个屏幕 (:0.0),它跨越所有显示器(使多显示器应用程序变得更容易)。 hostB 有两个 X 服务器,其中第二个服务器没有物理显示器(例如,用于 VNC 的虚拟帧缓冲区)。 hostC 是一个无头服务器,没有任何监视器。
航站楼 1a、2a、5a、6a:如果您打开本地终端,并将显示设置为:0.0(默认)或:0.1,则图形程序的绘图调用将直接通过内存发送到本地 X 服务器。
航站楼 1b、5b:如果您 ssh 到某个服务器,通常显示会自动设置为本地 X 服务器(如果有可用的话)。否则,它根本不会被设置(原因见终端 3)。
2b、6b 航站楼:如果您通过 ssh 连接到服务器,并通过“-X”参数启用 X11 转发,则会通过 ssh 连接自动创建隧道。在本例中,主机 B 上的 TCP 端口 6010 (6000+display#) 将流量转发到主机 A 上的端口 6000 (X 服务器 #0)。通常前 10 个显示是为“真实”服务器保留的,因此 ssh 重新映射显示 #10(下一个用户在您登录时使用 ssh -X 连接,然后将获得 #11)。没有启动额外的 X 服务器,hostA 上的 X 服务器 #0 的权限由 ssh 自动处理。
4号航站楼:如果你在display/screen#前面添加一个主机名(例如localhost),X11也将通过TCP而不是内存进行通信。
3号航站楼:您还可以直接通过网络发送 X11 命令,而无需先设置 ssh 隧道。这里的主要问题是,您的网络/防火墙/等。需要配置为允许这样做(注意 X11 实际上未加密),并且需要手动授予 X 服务器的权限(xhosts 或 Xauthority)。
回答您的问题
X服务器、显示器、屏幕之间有什么联系和区别?
显示只是指一些X服务器某处。术语“两个显示”是指本地计算机上的“:0.0”(“本地显示”)等于 ssh 目标上的“localhost:10.0”(“TCP 显示”)。 “屏幕”指的是 X 服务器的不同虚拟监视器(帧缓冲区)。 “localhost:10.0”仅重定向到本地 X 服务器,ssh 目标上没有启动 X 服务器(请参阅场景终端 2b/6b)。