vncserver 创建显示为 :<Displaynumber> 而不是主机名:<Displaynumber>

问题描述 投票:0回答:1

当我运行

vncserver
命令时,它将创建显示为
:1
的会话,并且在终端中,当我们检查显示变量时,它被设置为
DISPLAY=:1
,是否可以创建带有显示变量集的 vnc 会话作为
DISPLAY=hostname:1
,我知道根据 shell 使用
export
setenv
命令来更改显示变量,但是如果我手动将显示变量更改为
hostname:1
,则
xhost
命令不起作用,因为vnc 会话最初仅为
:1
创建,

不确定为什么会出现这种行为或者这是默认行为吗?

正在使用 Solaris 11.4 操作系统

solaris vnc vnc-server
1个回答
0
投票

您误解了 X Windows

DISPLAY
环境变量的工作原理。

根据 X.org 文档(粗体我的):

从用户的角度来看,每个 X 服务器都有一个显示名称 形式:

hostname:displaynumber.screennumber

应用程序使用此信息来确定它应该如何 连接到服务器以及默认情况下应使用哪个屏幕(在 与多个显示器一起显示):

主机名

主机名指定显示所在机器的名称 物理连接。 如果没有给出主机名,最有效的 将使用与同一台机器上的服务器通信的方式

显示号码

“展示”一词通常用来指集合 共享通用键盘和指针的显示器(鼠标、平板电脑、 ETC。)。大多数工作站往往只有一个键盘,并且 因此,只有一台显示器。然而,更大的多用户系统 经常有多个显示器,以便多个人可以 立即进行图形工作。为了避免混淆,每个显示器上 当 X 出现时,机器会被分配一个显示编号(从 0 开始) 该显示的服务器已启动。显示编号必须始终为 以显示名称给出。

屏幕编号

某些显示器在两个或多个显示器之间共享一个键盘和指针 监视器。由于每个显示器都有自己的一组窗口,因此每个屏幕 当 X 服务器为 该显示已启动。如果未给出屏幕编号,则屏幕 0 会用到。

在 POSIX 系统上,默认显示名称存储在您的 DISPLAY 中 环境变量。该变量由 xterm 自动设置 终端模拟器。但是,当您登录到另一台计算机上时 网络,您需要手动设置 DISPLAY 以指向您的 展示。例如,...

从 X 服务器进程来看,显示名称中没有

hostname
部分 - 服务器正在其运行的系统上运行。

因此,将 X 服务器设置为在

hostname:1
上运行与将其设置为在
:1
上运行没有什么不同。

对于 X Windows 客户端程序,

hostname
环境变量的
DISPLAY
部分表示它们需要连接的显示器正在运行的系统。换句话说,连接变成了网络连接。

当您的

xterm
进程在本地启动时,它默认连接到 local X 服务器进程,用
:1
表示(或
:0
:0.0
:2.0
...)。设置
DISPLAY=hostname:1
意味着 X 客户端进程将尝试与在
:1
系统上运行的
hostname
显示器执行网络连接。 如果 X 服务器进程未配置为除了本地连接之外还侦听网络连接,或者如果存在防火墙,则该客户端进程将无法连接到
hostname:1

因此,如果 X 服务器未配置为允许此类访问,则仅使用

xhost
命令启用远程访问将不起作用。

对于

:1
显示,如果您的 X 服务器 配置为允许远程访问,运行
netstat -an | grep 6001
将产生如下输出:

*:6001       *      *     0     0 256000     * LISTEN

如果您在端口 6001 上没有看到任何带有

LISTEN
的进程,则您的
:1
显示器的 X 服务器未配置为接受远程连接。

© www.soinside.com 2019 - 2024. All rights reserved.