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

时间:2016-07-15 17:48:30

标签: linux ssh virtual-machine jvisualvm x11-forwarding

我在远程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。

2 个答案:

答案 0 :(得分:1)

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

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

xhost <linux host address>

但是请注意,这会打开你的本地机器到每个人都可以访问那个linux主机,或者谁可以欺骗那个主机地址(这意味着基本上每个人都在,除非你和linux机器都在防火墙内),所以这个是一个好主意。

答案 1 :(得分:0)

尝试添加

X11UseLocalHost no

的/ etc / SSH / sshd_config中