让 Xorg 监听 TCP,但只监听 localhost?

Paŭ*_*ann 13 xorg 11.04 localhost

我有一些需要访问 X 服务器的 X 客户端程序。它只能通过 TCP 访问 X 服务器,不能通过其他方法(如 unix 域套接字)访问。它将在与服务器相同的主机上运行,​​以使事情变得简单。

那么,如何让我的 Xorg 服务器侦听 TCP 端口 6000,但仅侦听来自本地主机的连接?

我发现如何让 X.org 侦听端口 6000 上的远程连接?,它解释了如何启用远程主机的访问,但我并不真正想要远程访问(主要是出于安全原因)。

我想以某种方式将默认传输转发到 TCP,但我并没有真正找到有关默认传输是什么的信息。

(我在这里使用 kdm 作为我的显示管理器,但我认为我可以为任一显示管理器传输解决方案,甚至切换显示管理器。)

有任何想法吗?

这是在 11.04 上的混合 Kubuntu-Ubuntu-XUbuntu 安装(最初是 Kubuntu,但我添加了 ubuntu-desktop 和 xubuntu-desktop。在启动时它现在说是 Xubuntu 11.04)。我现在正在使用 KDM 的 gnome-classic 桌面。

Paŭ*_*ann 10

看起来解决方法是使用socat. 如果 X 服务器尚未在 TCP 上运行,这是一个似乎有效的命令行:

socat -d -d TCP-LISTEN:6000,fork,bind=localhost UNIX-CONNECT:/tmp/.X11-unix/X0
Run Code Online (Sandbox Code Playgroud)

那我可以做

xlogo -display localhost:0
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我让它在 6001 上监听然后指定显示localhost:1而不是localhost:0- 我得到No protocol specified. 看来我必须再次阅读 X 协议。(然后通过 JSch 退出Invalid MIT-MAGIC-COOKIE-1 key,但这是另一个问题。)


ala*_*anc 5

Xorg 代码目前没有任何选项来控制要侦听的接口。添加它应该不难,但是简单地配置您的防火墙以阻止来自其他机器到端口 6000 的传入连接应该更容易。