我有一个运行gdm的Ubuntu服务器,里面有graphics用户会话。 我也有从该服务器上的远程主机打开ssh控制台。
我想从该远程控制台运行x windows应用程序。
export DISPLAY=0.0 xclock Error: Can't open display: 0.0
我怎么能做到这一点,而无需重新启动gdm和启用与xhost +的远程连接,有什么办法吗? 我不能使用本地命名pipe道连接到显示服务器?
您需要运行您想要显示的命令作为login的同一用户。在运行gdm
的情况下,这将是root用户。
# DISPLAY=:0.0 yourcommand or # export DISPLAY=:0.0 # yourcommand
如果要允许本地计算机上的所有其他用户使用显示器,请将其作为显示器的当前用户运行:
xhost +local:
(没有什么:)
这可能是一个问题,如果有其他用户,你不希望允许使用显示器。 在这种情况下,您需要使用xauth
进行更细粒度的控制。
在X-Windows会话中,调出一个terminal并键入
xhost +local
然后在远程SSHterminal中运行你的命令:
export DISPLAY=:0.0 xclock &
这应该正常工作。
显示属性需要一个领先的“:”。 整个符号实际上是host:displaynum ,但是如果你希望主机部分显示在本地主机上,主机部分可以被closures。 但是,冒号不能离开。 所以“:0.0”是你可能想要的值(和“:0”可能也会起作用)。
当从远程主机进入时,实际上最简单的事情(因为它负责X身份validation并确保X连接)是让ssh为您处理X屏幕转发和环境设置。 你可以用-X开关来做到这一点:
ssh -X remotehost.example.com
这样做后,你可以检查DISPLAYvariables,你会发现它会是这样的:10.0 ,因为它实际上是将远程X显示端口端口转发到本地显示。