这是 Ubuntu 10.10(Maverick Meerkat)64 位桌面。
我想让我的 X 服务器监听来自本地网络上其他机器的客户端的远程连接。我知道,ssh -X
但这不是我想要的。我隐约记得将某些内容TCPListen
从no
改为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 tcp
X 可执行文件的选项。我不知道是否需要这样做。您可能想尝试避免进行此编辑。
如果您仅更改 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 测试。