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

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

我可以使用以下方式登录服务器:

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

你对我在这里缺少什么有什么建议吗?

答案1

使用-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 进行 ssh 操作。您可能还想设置

X11UseLocalhost no

在这种情况下也是如此。

答案2

这对我有用:

改变

X11UseLocalhost yes

X11UseLocalhost no

答案3

归功于https://unix.stackexchange.com/a/12772/61349获取他们的诊断说明。

确保您的 ssh 客户端正在请求 X11 转发-v旗帜

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.

答案4

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

相关内容