在以前版本的 RHEL(至少 RHEL5/6/7)上,可以创建运行 vncserver(从 Tigervnc-server)并通过将DISPLAY
远程服务器上的环境变量导出到hostname:display
vncserver 的方式从另一台服务器转发 X11 显示。
例如我有workstation1
、server1
、 和server2
。我可以从workstation1 ssh 到server1
,在:1 上启动vncserver。单独 ssh 到server2
并运行export DISPLAY=server1:1
。然后在 上运行 X11 应用程序server2
,并假设正确的 xhost、防火墙和端口侦听设置,它将出现在 server1 上的 vncserver 中。
我注意到在 RHEL8 和 RHEL9 上情况不再是这样。在 RHEL7 上,当启动 vncserver 时,侦听器会出现在两个单独的端口上。一对5900+显示数量和一对6000+显示数量。在 RHEL8 和 RHEL9 上,侦听器仅出现在 5900 + 显示器上。
根据strace
尝试转发xeyes
到 vnc 的输出,似乎仍在尝试建立与 6000 + 显示器的连接。为了尝试“欺骗”系统,我在显示器 101 上运行了 vncserver,它在 上的端口 6001 上创建了侦听器server1
。然后继续运行export DISPLAY=:1
并server2
尝试运行 xeyes。它确实尝试连接到端口6001
,但仍然被拒绝。
Error: Can't open display: server1:1
在 RHEL8 或 RHEL9 上运行 vncserver 时,有什么方法可以启用 X11 侦听器?我知道使用 SSH 转发仍然有效,但我希望能够导出显示并通过网络使用本机 X11 转发。
另外,如果它是相关的。我使用 Plasma 5 作为我的 DE。
答案1
简短回答:添加listen=tcp
到配置文件(例如 /etc/tigervnc/vncserver-config-defaults)
我在 TigerVNC git repo 中做了一些挖掘,发现这。具体来说是这样的:
我最近了解到一个有效的条目是“listen=tcp”,它使服务器能够在端口 6000 上侦听 TCP 连接
我添加listen=tcp
并/etc/tigervnc/vncserver-config-defaults
重新启动了我的 vncserver。我检查了它是否正在侦听 6000+ 显示端口,确实如此。再次尝试转发 X11 显示,一切正常。