Dar*_*zer 151 ssh display xorg gtk
在我的 Mac(OS X 10.6.8)上启动 X11 应用程序(XQuartz 2.3.6,xorg-server 1.4.2-apple56)后,在 X11 中打开一个终端并运行xhost +
,然后ssh -Y
我到我的 Ubuntu 10.04 VM(在 VMware 上运行)融合)。当我跑步时gedit .bashrc
(例如),我得到:
(gedit:9510): Gtk-WARNING **: cannot open display:
Run Code Online (Sandbox Code Playgroud)
set | grep DISPLAY
什么都不返回。
但是如果我ssh -Y
进入我的 Ubuntu 11.04 机器,就gedit .bashrc
可以了。 echo $DISPLAY
返回“本地主机:10.0”。
我export DISPLAY=localhost:10.0
在 sshed 进入我的 VM 然后运行时尝试过gedit .bashrc
,但我得到:
(gedit:9625): Gtk-WARNING **: cannot open display: localhost:10.0
Run Code Online (Sandbox Code Playgroud)
两台不同的 Ubuntu 机器的配置有什么不同可以解释为什么一台可以工作而另一台不可以?
更新:正如Zoredache在下面的评论中所建议的,我跑了sudo apt-get install xbase-clients
,但我仍然遇到同样的问题。
har*_*ymc 82
来自xhost+:如何在远程服务器上启动 GUI 时修复“无法打开显示”错误:
答:您可以按照本文中提到的 xhost 程序修复“无法打开显示”错误。
允许客户端使用 xhost+ 从任何主机连接
执行以下命令禁用访问控制,您可以允许客户端从任何主机连接。
Run Code Online (Sandbox Code Playgroud)$ xhost +
禁用访问控制,客户端可以从任何主机连接
启用 X11 转发
在执行 ssh 时,使用选项 -X 来启用 X11 转发。
Run Code Online (Sandbox Code Playgroud)$ ssh username@hostname -X
启用受信任的 X11 转发,通过使用 -Y 选项,
Run Code Online (Sandbox Code Playgroud)$ ssh username@hostname -Y
在该主机中打开 GUI 应用程序
如上所述打开与远程主机的 ssh 连接后,您可以打开任何 GUI 应用程序,它可以毫无问题地打开它。
如果仍然出现“无法打开显示器”错误,请按如下所示设置 DISPLAY 变量。
Run Code Online (Sandbox Code Playgroud)$ export DISPLAY='IP:0.0'
注意:IP 是您希望在其中显示 GUI 应用程序的本地工作站的 IP。
小智 61
检查服务器的sshd_config
(通常/etc/ssh/sshd_config
),并确保X11Forwarding
选项已启用
X11Forwarding yes
Run Code Online (Sandbox Code Playgroud)
如果未指定 X11Forwarding,则默认no
在我可以检查的 Debian 机器上。
spi*_*nup 24
我在从 Mac OS X 登录 Ubuntu VM 时也遇到了这个问题——出于某种原因,它似乎不喜欢显示变量中的“localhost”。所以手动设置IP,正如harrymc建议的那样:
export DISPLAY="127.0.0.1:10.0"
Run Code Online (Sandbox Code Playgroud)
那么X11程序应该没问题。似乎没有必要告诉操作系统 localhost 和 127.0.0.1 是等效的,但至少它可以工作。
小智 11
如果您在使用arg运行一段时间后遇到此问题-X
。或者只是ForwardX11
在 /etc/ssh/ssh_config 中,然后运行$ ssh username@hostname -Y
,以启用受信任的 X11 转发,不知道确切原因,但我猜测-X
某些功能会在一段时间后过期,可能是为了提高安全性。
这是我在网上找到的:
如果您使用 ssh -X remotemachine,远程机器将被视为不受信任的客户端。因此,您的本地客户端向远程计算机发送命令并接收图形输出。如果您的命令违反了某些安全设置,您将收到错误消息。
但是,如果您使用 ssh -Y remotemachine,则远程机器将被视为受信任的客户端。最后一个选项可能会导致安全问题。因为其他图形 (X11) 客户端可以从远程机器嗅探数据(制作屏幕截图、进行键盘记录和其他讨厌的事情),甚至可以更改这些数据。
如果您想了解更多关于这些内容,我建议您阅读 Xsecurity 联机帮助页或 X Security 扩展规范。此外,您可以检查 /etc/ssh/ssh_config 中的 ForwardX11 和 ForwardX11Trusted 选项。
来源:
刚刚在我的 Mac 上测试过,其他系统可能没问题:
$ xhost +
【Mac系统】安装X11 for mac https://www.xquartz.org/
更新
/etc/ssh/sshd_config
并设置X11Forwarding yes
,然后重新启动您的 ssh 服务器
-X
参数
$ ssh -X 用户@ip
- 打开一个支持 X11 显示的 ssh 会话(记得保留这个会话)
echo $DISPLAY
在该 ssh 会话中运行DISPLAY
为你的 PyCharm设置环境变量
小智 6
我必须/etc/ssh/sshd_config
输入以下内容:
X11UseLocalhost no
Run Code Online (Sandbox Code Playgroud)
而不是将其设置为“是”。奇怪,如果默认为“NO” 用户在 Windows 下使用 putty 和 XMing。我在 Fedora 上直接使用 ssh。有时它会开始给我们
error can't open display localhost
Run Code Online (Sandbox Code Playgroud)
重新启动服务器通常会修复它,但这是愚蠢的。执行上述操作后,重新启动了服务器sshd
上的服务,并再次使新连接正常工作。
这个设置对我有用:
本地(Windows 10 上的 64 位 Cygwin)DISPLAY=:0
服务器(亚马逊 EC2 RHEL 7.6)DISPLAY=:10.0
通过单击任务栏中的“X applications menu on :0”并选择“系统工具”>“终端”可以找到这些设置
小智 5
运行 UXTERM 或 XTERM 时只需发出
export $DISPLAY
Run Code Online (Sandbox Code Playgroud)
变量将在那里。然后只需设置并导出即可。
归档时间: |
|
查看次数: |
1393434 次 |
最近记录: |