ssh -X“ Xt错误:无法打开显示::0.0”


9

我正在尝试xterm使用ssh在远程服务器(Ubuntu Server 10.04)上打开:

ssh -X name@machine xterm

但是返回的错误是:

xterm Xt error: Can't open display: :0.0`

我用谷歌搜索并尝试了所有发现的东西。仍然出现此错误。应该自动设置DISPLAY变量,对吗?

的一部分sshd_config

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

有什么建议吗?


可以 ssh-ing 之前xterm在当前终端中运行吗?
enzotib 2011年

@belacqua:不需要。我通常连接到远程无头服务器,并且可以轻松地在本地X服务器上运行远程X应用程序。
enzotib

@enzotib-谢谢; 我不知道
belacqua 2011年

@enzotib对不起,我没有看到您的评论。是的,我可以在本地计算机上打开xterm
Fabian

Answers:


8

如果ssh能够建立连接,它将设置DISPLAY为适当的值。由于已将其X11DisplayOffset设置为10(默认值),因此ssh将使用从10开始的第一个可用显示。如果看到的值小于10¹,则说明ssh设置了正常的X11转发,至少是通过压倒性的DISPLAY。值:0(或:0.0,点后不相关的部分)表示在计算机上启动的第一个显示器,在典型情况下,这是计算机控制台上的活动会话(或图形登录提示)。

您观察到的行为最可能的解释是其中一个外壳程序配置文件集DISPLAY。最明显的罪魁祸首是~/.bashrc(由于bash的怪癖,只要bash的父对象是rshdor sshd,即使shell不是交互式的,它也会执行)。定义环境变量的另一个文件是/etc/environment。如果是这样,解决方案就很明显:不要在DISPLAY那里设置。(在极少数情况下,您需要DISPLAY手动设置。)

还有其他奇特的解释。如果您已将登录shell更改为screen(理论上是个好主意,但不切实际),并且有一个强制DISPLAY在屏幕内部设置的shell初始化文件(不是一个好主意),则可能会发生这种情况。如果您将服务器配置为接受客户端发送的环境变量(中的AcceptEnv指令sshd_config),客户端正在发送DISPLAY,并且无法建立X连接,也会发生这种情况。或者,如果您通过中的command指令在服务器上设置了环境变量,则可能会发生这种情况~/.ssh/authorized_keys。或者xterm可以是脚本。

¹ X11DisplayOffset服务器配置中的任何值,但几乎从未更改为默认值。


1
列出列出的方法来解决您提到的各种问题将很有帮助。
乔治·斯托克

@GeorgeStocker所有这些问题都是“配置文件中有某些设置”的形式,因此,解决所有这些问题的方法是删除或更改设置。特别是您可以识别但不能修复的一个吗?
吉尔斯(Gillles)“所以-别再邪恶了”

DISPLAY=localhost:11.0在上看到了env,但是它的相关性以及是否应该更改DISPLAY 10.0为尚不清楚。
George Stocker

@GeorgeStocker然后您的症状与这个问题不符。我已经更新了答案,以澄清10是该答案适用的下限值。11是此处的期望值(可能是具有X转发的第二活动SSH连接)。
吉尔斯(Gillles)“所以-别再邪恶了”

我正在运行DISPLAY=:0 xterm并且仍然收到xterm: Xt error: Can't open display: :0错误,因此环境变量不是问题。
Dan Dascalescu

3

您的命令应该起作用,或者至少对我有用。尝试以下方法:

ssh -Y user@machine xterm

编辑(1):

尝试这个:

ssh -X user@machine env

那应该显示所有环境。那里应该有各种SSH内容,还有DISPLAY。DISPLAY应该为10.0。

您也可以尝试以下方法:

ssh -X user@machine DISPLAY=10.0 xterm

我尝试过,-Y但也没有用。我仍然得到Can't open display: :0.0
Fabian

您的本地计算机在运行什么?:0.0很重要,因为它是本地 X服务器的默认值,而不是远程X服务器的默认值...
ed。

我使用Ubuntu 10.04,Linux Mint 11或Mac OS X 10.7。用法取决于位置(工作地点/住所),但错误完全相同
Fabian

我将编辑答案...(1)
ed。

我的DISPLAY变量是localhost:10.0
Alexis Wilke,2016年

2

X的访问控制可能是这样。

运行xhost +(来自package x11-xserver-utils)以完全禁用访问控制。


2

以及X11Forwarding yes,我还需要添加

X11UseLocalhost no

/etc/ssh/sshd_config

作为描述在这里




-1

您应该先打开连接,然后建立打开xterm。


谢谢您的回答。“打开连接”是什么意思?当我使用 ssh -X name@machine 连接后,xterm我会得到同样的错误。你是那个意思吗 ;)
Fabian

不,它也应该无需连接就可以工作。
enzotib 2011年

@Fabian-我相信那是他的意思。
belacqua 2011年

我认为VNC连接是必要的。
nanofarad 2012年

@enzotib,嗯...实际上ssh是先连接,然后在该ssh环境中启动xterm 。因此,无论哪种方式,只有ssh -X remote先使用后,它几乎是一样的事情,然后才可以检查是否与echo $DISPLAY进行核对,以确保$DISPLAY在远程计算机上正确设置了远程计算机ssh -X
亚历克西斯·威尔克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.