如何让 X.org 监听端口 6000 上的远程连接?

如何让 X.org 监听端口 6000 上的远程连接?

这是 Ubuntu 10.10(Maverick Meerkat)64 位桌面。

我想让我的 X 服务器监听来自本地网络上其他机器的客户端的远程连接。我知道,ssh -X但这不是我想要的。我隐约记得将某些内容TCPListenno改为yes,但我不记得应该在哪里应用此更改。

我对 GUI 方法或 CLI 方法感兴趣。

PS 编辑/etc/X11/xinit/xserverrc以删除该-nolisten tcp选项,重新启动不起作用。

答案1

(以下几乎逐字逐句地复制了一位相同的问题在 serverfault 上,我已经忘记了;askubuntu 还没有创建)。

根据在本页面介绍如何启用 XDCMP和文件 /etc/gdm/gdm.schemas,我设法创建了一个/etc/gdm/custom.conf文件:

# /etc/gdm/custom.conf
[xdmcp]

[chooser]

[security]
DisallowTCP=false

[debug]

注意字母大小写:如果你写“disallowTCP=false”,它将不起作用...我还将 /etc/X11/xinit/xserverrc 文件更改为:

exec /usr/bin/X11/X

即我删除了-nolisten tcpX 可执行文件的选项。我不知道是否需要这样做。您可能想尝试避免进行此编辑。

如果您仅更改 xserverrc 文件,X 仍然会以“-nolisten TCP”启动。

此后,只需重新启动 gdm 进程:

sudo service gdm restart

您可以通过以下方式验证是否成功:

tzot@tzot-laptop:/etc/X11
$ netstat -an | grep -F 6000
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN
tcp6       0      0 :::6000                 :::*                    LISTEN

更新

升级到 12.04 后,我遇到了同样的问题。这次,罪魁祸首是系统使用的 lightdm。需要更新的文件是/etc/lightdm/lightdm.conf,所需的添加是部分xserver-allow-tcp=true中的[SeatDefaults]

之后我还发现那个答案。 :)

概要

因此,在 10.10 中这仍然有效:/etc/gdm/custom.conf使用上面指定的内容创建并重新启动gdm

答案2

这个答案与 Kubuntu 17.04 和 20.04 相关,我添加了它,因为其他答案(与gdm或者lightdm)帮助了我。就我而言sddm正在运行。要检查这一点,请运行例如

ps -eal | grep sddm

如果它正在运行,则显示进程sddm和。在这种情况下,添加一个配置文件,内容为sddm-helper/etc/sddm.conf

[X11]
ServerArguments=-listen tcp

20.04 或

[XDisplay]
ServerArguments=-listen tcp

适用于 17.04。创建此文件后,重新启动系统(可能sddm重新启动就足够了)。因此

ps ax | grep sddm 

显示所需Xorg选项-listen tcp,并且 X 服务器已准备好接受传入连接(请不要忘记使用 添加远程主机xhost)。

答案3

Ubuntu 18.04 以 lubuntu 18.04 和 lightdm 1.26.0 的形式运行,这就是我必须做的(我只花了几周时间就搞清楚了)。您必须按如下方式创建/etc/lightdm/lightdm.conf和:/etc/lightdm.conf.d/50-xserver-command.conf

sudo vi /etc/lightdm/lightdm.conf

[Seat:*]

xserver-allow-tcp=true
xserver-command=X -listen tcp

sudo vi /etc/lightdm/lightdm.conf.d/50-xserver-command.conf

[Seat:*]

xserver-command=X -core -listen tcp

这将导致 lightdm 使用以下命令行运行 Xorg:

Xorg -listen tcp :0 -seat seat0 -auth /var/run/lightdm/root/:0 -listen tcp vt7  
   -novtswitch

这有-listen tcp两次“”,但这不会造成任何影响。如果你没有这两个文件,Xorg 选项之一将是“-nolisten tcp”,它将覆盖另一个“-listen tcp”。我终于找到了这个线索这里

然后添加:xhost +到您的.bashrc

重新启动并检查 Xorg 现在是否正在监听端口 6000:

$ netstat -nal | grep 6000
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN     
tcp6       0      0 :::6000                 :::*                    LISTEN     

享受...

答案4

以下命令无需修改任何配置选项或重新启动窗口管理器即可工作。

打开终端窗口并运行以下命令:

socat -d -d TCP-LISTEN:6000,fork,bind=172.17.0.1 UNIX-CONNECT:/tmp/.X11-unix/X0 &

/tmp/.X11-unix/X0它将打开 TCP 端口 6000 作为窗口管理器监听的基于文件系统的套接字的双向通道。

末尾&的 表示只要终端打开,命令就会继续在后台运行。对于某些用途,仅在需要时运行它更安全,但如果您需要端口始终打开,我建议使用 systemd 创建服务

在我的计算机上,172.17.0.1是 Docker 网卡。或者,您可以使用它127.0.0.1来限制对本地连接的访问​​,甚至0.0.0.0允许来自外部的连接(建议使用防火墙)。

使用时索卡特首次使用需要安装:

sudo apt install socat

使用 Ubuntu 20.04 测试。

相关内容