使用SSH X11转发(`ssh -X`),尝试运行X应用程序时得到“无法打开显示”。


22

我可以使用登录到服务器

ssh -X Hostip

但是当我运行命令xclock时,给我这个错误

Error: Can't open display: localhost:11.0

我使用检查我的显示值

echo $DISPLAY

结果是

localhost:11.0

并且sshd_config文件中的X11转发设置为YES

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

有什么建议我在这里想念的吗?


3
您尝试了-Y替代-X吗?
2013年

2
另外,请确保您了解使用-Y代替的含义-X。您可能还想看看xhost
CVn

1
对于RedHat / CentOS 7(至少),您需要xorg-x11-xauth软件包,根据我在这里的回答:unix.stackexchange.com/questions/138936/…–
Mike S

Answers:


18

使用-Y。从ssh的手册页中:

-Y启用受信任的X11转发。受信任的X11转发不受X11 SECURITY扩展控件的约束。

如果您仍然遇到问题,可以尝试将其设置$DISPLAY为本地设备的IP

$ export DISPLAY='<ip_address>:11.0'

将其设置为

$ export DISPLAY='127.0.0.1:11.0'

从Mac OS X切换时,人们似乎通常会遇到此问题。您可能还需要设置

X11UseLocalhost no

在这种情况下也是一样。


1
使用XQuartz,我无法使用-Y标志。“ X11连接由于身份验证错误而被拒绝。”
Erik

5
即使尝试了您的其他建议,我也无法打开显示器。
Erik 2014年

2
这些都不对我有用。我需要在Centos 7服务器(最小)中安装XWindow支持,使用:yum groupinstall“ X Window System” -y
Mark Edington

@MarkEdington,这是因为RedHat / CentOS需要xorg-x11-xauth软件包,按照我在这里的回答:unix.stackexchange.com/questions/138936/…–
Mike S

6

这为我工作:

更改

X11UseLocalhost yes

X11UseLocalhost no

谢谢,唐。对我也有用。我给你投票了。我相信干扰默认设置的问题是特定计算机已启用xhost。
LD詹姆斯

6
来宾吗 主办?哪个配置文件?thx来完成您的答案
Philippe Gachoud

我将其设置为来使其正常工作/etc/ssh/sshd_config
llinfeng

6

归功于/unix//a/12772/61349的诊断说明。

确保您的ssh客户端正在使用-v标志请求X11转发

ssh example.com -X -v

并查找特定的消息:

debug1: Requesting X11 forwarding with authentication spoofing.

另一个告诉问题的迹象是缺少DISPLAY为您设置的环境变量。如果为空白/未设置,则表示有问题。至少根据与上述相同的信息,这些变量是为您自动设置的。


我正在使用SSH Control Master进行ssh连接,如下所示:

Host <hostname>
    ControlMaster auto
    ControlPath ~/.ssh/control/%r@%h:%p
    ControlPersist 10m

我之前的ssh连接没有请求X11Firwarding,因此ssh未使用将来呼叫的选项。所以对我来说

ssh -X只是被完全忽略了

如果没有看到“请求X11转发”,但是您确实看到了复用器重用会话。

debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 10

然后,您需要退出该连接的当前ControlMaster,并使用-X / -Y标志重新连接。

停止ControlMaster

ssh -O check <hostname>

Master running (pid=2758)

(这将使用ControlMaster退出所有活动的连接)

ssh -O exit <hostname>

Exit request sent.

3

当尝试在macOS上转发到XQuartz时,我通过从XQuartz终端运行ssh命令(ssh -Y以我的情况为例)来解决此问题(通过右键单击扩展坞中的XQuartz图标并单击“应用程序”>“终端”打开)。


这对我
有用

3

对我来说,解决此问题的方法是简单地安装xauth,一旦完成,它就像一个魅力!

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.