如何将 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 主机上的虚拟机?的主要内容,如果未能解决你的问题,请参考以下文章