xhost +
之后,然后我将ssh -Y
连接到Ubuntu 10.04 VM(正在运行)在VMware Fusion上)。例如,当我运行gedit .bashrc
时,我得到:(gedit:9510): Gtk-WARNING **: cannot open display:
set | grep DISPLAY
不返回任何内容。但是如果我将
ssh -Y
放入我的Ubuntu 11.04计算机中,gedit .bashrc
正常运作。 echo $DISPLAY
返回“ localhost:10.0”。我尝试将
export DISPLAY=localhost:10.0
放入我的VM中,然后运行gedit .bashrc
,但是我得到:(gedit:9625): Gtk-WARNING **: cannot open display: localhost:10.0
更新:正如Zoredache在下面的评论中所建议的那样,我运行了
sudo apt-get install xbase-clients
,但是,我仍然遇到同样的问题。#1 楼
检查服务器的sshd_config
(通常是/etc/ssh/sshd_config
),并确保通过以下行启用X11Forwarding
选项:X11Forwarding yes
如果未指定X11Forwarding,则在我可以检查的Debian机器上默认为
no
。 />评论
设置了另一个Ubuntu VM之后,我发现需要安装xbase-clients并启用X11Forwarding。更新您的答案以包括两者,我会接受的。
– Daryl Spitzer
2011年7月13日在19:21
有趣。至少在今天早上我新安装的10.04版本中,默认情况下启用了X11Forwarding。 Ubuntu的家伙们一定又在搞砸默认设置了。
– Zoredache
2011年7月13日19:50
@DerfK,在我的系统“ X11Forwarding yes”中仍然存在错误,原因是(gedit:8381):Gtk-警告**:无法打开显示:在这种情况下
– A J
2015年10月6日在8:30
在Debian上,您可能必须安装软件包xauth,然后再次登录。
– comte
18年8月7日在9:40
在这里不工作,X11Forwarding设置为yes。 xauth已安装。
– RichieHH
20-3-21在16:06
#2 楼
从xhost +:在远程服务器上启动GUI时,如何解决“无法打开显示”错误:答案:您可以通过执行xhost中提到的xhost过程来解决“无法打开显示”错误。本文。
允许客户端使用xhost +从任何主机进行连接
执行以下命令以禁用访问控制,通过该命令,您可以允许客户端进行连接从任何主机访问。
$ xhost +
禁用访问控制,客户端可以从任何主机进行连接
启用X11转发
在执行ssh时,请使用选项-X启用X11转发。
$ ssh username@hostname -X
通过使用-Y选项,启用受信任的X11转发,
$ ssh username@hostname -Y
在该主机中打开GUI应用程序
如上所述打开与远程主机的ssh连接后,
您可以打开任何GUI应用程序而无需打开它任何问题。
如果您仍然得到“无法打开显示”错误,如下所示设置DISPLAY
变量。
$ export DISPLAY='IP:0.0'
注意:IP是您想要GUI的本地工作站的IP
要显示的应用程序。
评论
+1(注意IP =是您要获取GUI的本地工作站的IP)
– PCoder
13年11月2日在10:15
对于那些在OS X上存在类似问题的用户,还请确保已安装XQuartz,否则这些修补程序都无济于事。 (OP的问题表明他拥有XQuartz,所以对于那些与我有类似问题的人来说,这更是一个旁注)
– Dolan Antenucci
2014年5月28日在21:49
请注意,运行xhost +是非常不安全的,不应使用!正如Stefan Rogin所提到的,攻击者然后可以从主机连接到XSession,读取您键入的所有内容,甚至更改您看到的屏幕。
–吉里斯拉夫
18年5月13日在8:38
最后一个出口Display = IP:0.0对我有用
– StephenBoesch
19-10-18在22:41
无论出于什么原因,-Y都能正常工作,-X则无法工作。
– ibic
19-10-26在14:44
#3 楼
我也从Mac OS X登录到Ubuntu VM时遇到了这个问题-由于某种原因,它似乎在显示变量中不喜欢'localhost'。因此,按照harrymc的建议手动设置IP:似乎没有必要告诉操作系统localhost和127.0.0.1是等效的,但至少可以正常工作。评论
这对我有用。知道为什么localhost无法正常工作吗?
– Alex
13年9月24日在4:47
答对了!我已经被这个问题困扰了一段时间了……我通过SSH连接,无法启动Gtk程序(普通的X11,例如“ xeyes”,可以正常工作)。显示正确。实际上,“ localhost”的分辨率不是!如果我手动设置DISPLAY = 127.0.0.1:10.0或DISPLAY = :: 1:10.0则可以正常工作。编辑/ etc / hosts似乎没有任何效果。并且正确配置了DNS(“ dig localhost”的正确性报告两者均为127.0.0.1和::: 1)因此,对于Gtk中的X11连接(gtk?gdk?glib?other?),无论DNS解析是什么,似乎都是一个错误。
– Pablo Saratxaga
2014年2月9日在11:38
在为Beagle Bone Black安装Debian时,除root以外,其他任何人均未将/ etc / host设置为可读。这导致了此处报告的症状。使/ etc / hosts所有人都可读,并且效果很好。
–丹尼尔(Daniel)
16年6月6日下午2:00
我的错误现在无法打开显示“ 127.0.0.1:10.0”
–dustytrash
20年4月5日在21:45
这个答案很有可能是因为在/ etc / hosts文件中没有定义127.0.0.1 localhost,因为大多数基于debian的发行版安装程序127.0.1.1 localhost都没有,因此当您在登录后手动设置此env var时,事情就开始起作用。我将以上条目添加到/ etc / hosts中,并且登录后不再需要手动设置DISPLAY env var。
– ipatch
20-10-28在19:31
#4 楼
我的CentOS KVM服务器出现此问题,我缺少“ xauth”程序。评论
这对我最小的debian安装有所帮助,非常感谢!
– binOr
13年1月16日在9:44
#5 楼
如果在使用-X
arg运行一段时间后遇到此问题。或只是/ etc / ssh / ssh_config中的ForwardX11
,然后运行$ ssh username@hostname -Y
来启用受信任的X11转发,不知道确切的原因,但我猜测-X
某些功能会在一段时间后到期,可能是为了提高安全性。 > 这是我在网上找到的内容:
如果使用ssh -X remotemachine,则远程计算机将被视为不受信任的客户端。因此,您的本地客户端将命令发送到远程计算机,并接收图形输出。如果您的命令违反了某些安全设置,则会收到错误消息。
但是,如果您使用ssh -Y remotemachine,则将远程计算机视为受信任的客户端。最后一个选项可能会打开安全性问题。因为
其他图形(X11)客户端可能会嗅探远程计算机中的数据(制作屏幕截图,进行键盘记录和其他令人讨厌的事情),甚至
也可以更改这些数据。
如果您想进一步了解这些内容,建议阅读
Xsecurity手册页或X Security扩展规范。此外,您
可以在您的
/ etc / ssh / ssh_config中检查选项ForwardX11和ForwardX11Trusted。
来源:
ssh -Y和ssh -X有什么区别?
cygwin / X警告:无法打开X显示器
#6 楼
刚刚在我的Mac上经过测试,其他系统可能还可以:允许客户端使用xhost +从任何主机进行连接
$ xhost +
您应该具有支持X11显示的环境
[Mac系统]为Mac安装X11 https://www.xquartz.org/
您应该让ssh-server转发x11显示器
更新
/etc/ssh/sshd_config
并设置X11Forwarding yes
,然后重新启动ssh服务器您应该使用
-X
参数让ssh会话转发x11显示$ ssh -X user @ ip
如何要在PyCharm中打开X11应用程序?
打开一个支持X11显示的ssh会话(请记住保持该会话)
在该ssh会话中运行
echo $DISPLAY
/>为您的PyCharm设置
DISPLAY
环境变量评论
为什么这是不同的?为什么它比其他任何答案都更受欢迎?请解释一下是否可以进行简单的编辑。你能行的!!
–以前的Pimp Juice IT
17年8月30日在12:34
@麦当劳的谢谢,已更新了更多详细信息。
–颜色
17年4月4日在2:58
#7 楼
我必须在/etc/ssh/sshd_config
中输入以下内容:X11UseLocalhost no
然后将其设置为“是”。如果默认值是“ NO”,那会很奇怪。
在Windows下使用带有XMing的腻子的用户。
我在Fedora上使用了ssh。
有时它会开始给我们提供
error can't open display localhost
重新启动服务器通常可以解决问题,但这很愚蠢。
进行了上述操作,重新启动了服务器上的服务
sshd
,并恢复了新的连接,再次正常工作。#8 楼
运行UXTERM或XTERM时,只需发出export $DISPLAY
变量就在那里。然后只需将其设置并导出即可。
#9 楼
此设置适用于我:本地(Windows 10上为64位Cygwin)
DISPLAY=:0
服务器(Amazon EC2 RHEL 7.6)
DISPLAY=:10.0
这些设置通过单击任务栏中的“:0上的X应用程序菜单”,然后选择“系统工具”>“终端”,即可找到
评论
这适用于我(macOS Mojave上的XQuartz,Debian 10上的X11 Client)。谢谢!
– Arnie97
19年11月27日在17:52
#10 楼
我在Solaris 10中也遇到了这个问题,发现未设置侦听器。svccfg –s /application/x11/x11-server listprop options/tcp_listen
svccfg –s /application/x11/x11-server setprop options/tcp_listen = true
#11 楼
打开终端$ ssh username @ hostname -X
$ ssh username@hostname -Y
$ export DISPLAY='IP:0.0'
export DISPLAY =“ 127.0.0.1:10.0”
应该都可以。
/>
评论
谢谢。当DISPLAY ='localhost:10.0'不起作用时,适用于我的特殊情况。
–xpt
18/12/9在22:42
#12 楼
在CentOS 6.5上,我弄乱了/ etc / hosts后突然失去了对X程序的远程访问。同样的症状是空$ DISPLAY变量(无助于手动设置/导出)。
指向实际主机名的127.0.0.1条目是必需的;实际上,顺序似乎也很相关(放倒了,就行不通...)
[root@poseidon /etc]$ cat hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
127.0.0.1 poseidon.mycampus.edu poseidon
1XX.XXX.XXX.208 poseidon.mycampus.edu poseidon
修复此问题后,进行了xeyes,xclock和其他X测试玩具又能正常工作了,因此我需要的virt-manager也重新上线了。
#13 楼
我只是在我的设置中发现一个不错的问题,阻止了x转发:我的防火墙阻止了来自localhost的所有连接,从而阻止了隧道的建立
#14 楼
如果您恰巧使用Konsole,只需切换到另一个终端仿真器(例如Xfce Terminal),然后使用root再试一次。#15 楼
其他要检查的是您是否处于提升的提示中或正在使用其他用户的bash。如果运行
sudo su
并尝试打开X11窗口,则必须先恢复到原始的ssh bash,然后才能运行。 #16 楼
我经常遇到这个问题,最后我找出了问题并解决了。这是检查表。确保满足以下所有条件。
X11Forwarding yes
(检查/etc/ssh/sshd_config
)ssh -Y username@remoteserver.de
(重要:-Y
)如果必须经过多个跃点才能到达目标服务器,请确保在所有ssh连接上都使用
ssh -Y ...
。这是display
对我失败的原因之一,因为我只是在其中一个连接处使用了ssh username@remote_host.de
。
评论
Ubuntu 10.04包装盒是否安装了适用于X11的适当工具?安装xbase-clients(如果尚未安装)。我安装了它,但是仍然有同样的问题。 (请参见上文。)
也许尝试在连接时将-vv选项传递给ssh,这会显示详细的调试消息,您应该在连接时看到有关X11转发的一些注释。
@jcrawfordor您确实在ubuntu上检查了X11Forwarding,并且安装了xbase-clients,并且可以在建立ssh连接的终端上的mac上启动Xapps。 (检查在运行ssh的终端上是否设置了$ DISPLAY。
就我而言,仅是升级Mac OS XQuartz版本的问题