ssh -X 和 chroot 后无法打开 GUI

ssh -X 和 chroot 后无法打开 GUI

我通过 ssh(使用 -X 选项)连接到另一台计算机,然后进行 chroot。

然后我在运行 X11 应用程序时遇到问题。

举个例子,在 ssh 之后,我将运行 emacs,它将打开一个新窗口作为 X11 应用程序。运行 chroot 并执行 ssh 后,我会看到 emacs 作为控制台应用程序运行。

我没有收到错误,因为 emacs 可以将其作为 X11 应用程序或控制台应用程序运行,但对于其他 GUI 应用程序,我收到错误消息:

"cannot open display: localhost:10.0"

PS:只是为了阻止任何想要建议检查 $DISPLAY 的人,它设置正确。

我想知道是否有任何日志可以检查,看看我是否可以识别问题。

答案1

除了其他答案中提到的 .Xauthority 文件之外,您的 chroot 还需要其中包含 X 套接字。 ssh -X不通过抽象套接字转发 X,仅通过带有路径的 UNIX 套接字转发 X。如果您的 chroot 没有/tmp/.X11-unix绑定安装到其中,则 chroot 中的程序无法连接到 X 服务器。

答案2

看看超级用户上的这个帖子,标题为:在启用 X11 转发的 ssh 后打开 X 程序时,如何修复“无法打开显示”错误?

假设您能够使用您正在 ssh 登录的第一个帐户进行 ssh,那么您的问题与此无关:

# /etc/ssh/sshd_config
X11Forwarding yes

现在您已经 chroot 后,很可能无法再访问本地端的 .XAuthority 文件。为了管理 X 应用程序的远程显示,需要此文件。

请参阅xauthMKX认证手册页了解更多详细信息。

另外,如果您不熟悉 X$HOME/.Xauthority麻省理工学院魔法饼干机制起作用,这里有一个很好的入门书,标题为:缺乏.X权限,关于它是如何工作的。

答案3

最近遇到了同样的问题,这对我有用:

ssh -Y -C userontheserver@server
cp ~/.Xauthority /chrootdir/home/userinchroot/.Xauthority
chroot /chrootdir

您可能需要根据您使用 chroot 的方式进行调整(例如绑定/devproc...)

相关内容