首先:我已经阅读了关于SO的类似问题的答案,但没有一个能够工作。X11转发在Docker中运行的GUI应用程序
局势:
- 应用使用GUI在下Arch Linux的码头工人容器(CentOS的7.1)运行。 (机器A)
- 机器A有一个监视器连接到它。
- 我想通过我的Arch Linux客户端机器上的X11转发来访问此GUI。 (设备B)
什么工作:
- GUI本地工作机器A(与安装在所述容器多克尔/tmp/.X11-unix)。
- X11转发任何在Docker外部运行的应用程序(X11转发设置并正确运行以实现非泊坞窗使用)。
- 我甚至可以在远程登录时切换用户,将
.Xauthority
文件复制到其他用户,X11转发也可以。
一些设置信息:
- 泊坞网络是 '桥'。
- 容器可以到达主机(防火墙已打开)。
DISPLAY
变量在容器中设置(由于sshd正在侦听的TCP端口6010,因此host-ip-addr:10.0)。- 到X前向端口(6010)的数据包正从容器到达主机(选中
tcpdump
)。
什么不起作用:
-
泊坞窗应用的
- X11转发
- 错误:
X11 connection rejected because of wrong authentication.
xterm: Xt error: Can't open display: host-ip-addr:10.0
事情我尝试:
- 启动客户端SSH与机器B
ssh -Y
选项 - 将
"X11ForwardTrusted yes"
在ssh_config中对机器B xhost +
机器B(所以允许任何客户端连接)- 将
Host *
在ssh_config中的机器B - 将
X11UseLocalhost no
放在机器A的sshd_config中(允许非本地主机客户端) - 将第在容器E X的身份验证令牌与
xauth add
从机器上登录用户A - 只复制过
.Xauthority
文件从工作用户进入容器 - 使舒尔
.Xauthority
文件具有正确的权限和所有者
我怎么才能禁用所有的X安全的东西,并得到这个工作?
甚至更好:我如何才能使它与安全性一起工作?
是否至少有一种方法可以启用广泛的调试来查看问题的确切位置?