如何将 X11 转发到运行在远程 linux 主机上的虚拟机?

Posted

技术标签:

【中文标题】如何将 X11 转发到运行在远程 linux 主机上的虚拟机?【英文标题】:How to do X11 forwarding to a virtual machine running on a remote linux host? 【发布时间】:2016-07-15 17:48:30 【问题描述】:

我正在远程 linux 主机上运行虚拟机:

我的机器 -> linux 主机 -> 在 linux 主机上运行的虚拟机

我在 linux 主机和虚拟机上启用了 X11 转发。我正在尝试在我自己的机器上使用 ssh 命令(使用 ssh -X)启动的虚拟机上运行 JVisualVM。

我使用的 ssh 命令是:

ssh -X -t root@linux_host -L 29998:localhost:29999 ssh -X -t -i /root/.ssh/my_key user@virtual_machine -L 29999:localhost:9999

连接后,我将显示变量设置为:

DISPLAY=<my machine's ip address>:0.0

然后我用这个运行 JVisualVM,期望窗口在我自己的机器上打开:

/usr/java/jdk1.7.0_95/bin/jvisualvm -cp:a /opt/jboss/bin/client/jboss-cli-client.jar --jdkhome /usr/java/jdk1.7.0_95/

但是我得到一个显示未设置的错误,或者 JVisual 在几秒钟后退出,错误代码为 2。

【问题讨论】:

SuperUser.com 是解决这个问题的更好地方。 【参考方案1】:

由于您使用的是ssh -X,因此您显然希望通过 ssh 使用安全 X 转发。在这种情况下,ssh 应该为您设置 DISPLAY 变量,并且您不应该通过手动设置 DISPLAY 来覆盖它。如果 ssh 没有设置 DISPLAY,这意味着您的 ssh 服务器设置禁用了 X 转发(无论出于何种原因),您应该尽可能修复它。

如果您不想(或不能)使用 ssh X 转发,您可以使用直接连接(通过设置DISPLAY),但您还需要打开您机器上的 X 服务器以进行远程连接。您可以在本地计算机上使用 xhost 执行此操作:

xhost <linux host address>

但是请注意,这会向每个可以访问该 linux 主机或可以欺骗该主机地址的人打开您的本地计算机(这意味着基本上每个地方的每个人,除非您和 linux 计算机在防火墙内),所以这个不是一个好主意。

【讨论】:

【参考方案2】:

尝试添加

X11UseLocalHost 否

/etc/ssh/sshd_config

【讨论】:

以上是关于如何将 X11 转发到运行在远程 linux 主机上的虚拟机?的主要内容,如果未能解决你的问题,请参考以下文章

X11 MATLAB 显示图

linux下如何将GNOME Desktop桌面的信号通过x11转发到当前设备的桌面上?

使用linux命令行界面调用windows远程桌面

PuTTY+Xming实现X11的ssh转发

vscode集成终端如何开启x11转发?

X11 转发 ssh Visual Studio 远程连接