首先,我已经阅读了关于SO的类似问题的答案,但是没有一个起作用。
情况:
什么有效:
.Xauthority
一些设置信息:
DISPLAY
tcpdump
什么不起作用:
X11 connection rejected because of wrong authentication.
xterm: Xt error: Can't open display: host-ip-addr:10.0
我尝试过的事情:
ssh -Y
"X11ForwardTrusted yes"
xhost +
Host *
X11UseLocalhost no
xauth add
我如何才能禁用所有X安全功能并使其正常工作?
甚至更好:我如何使其与安全性一起使用?
至少有一种方法可以进行广泛的调试,以查看问题出在哪里?
好的,这是东西:
1)登录到远程机器
2)检查设置了哪个显示 echo $DISPLAY
echo $DISPLAY
3)运行 xauth list
xauth list
4)复制对应于您的行 DISPLAY
5)输入您的Docker容器
6)xauth add <the line you copied>*
xauth add <the line you copied>
7)将DISPLAY设置为 export DISPLAY=<ip-to-host>:<no-of-display>
export DISPLAY=<ip-to-host>:<no-of-display>
*到目前为止还好吧?
这并不是什么新鲜事……不过,这里有一个转折:xauth list登录用户打印的行看起来像这样(在我的情况下):
<hostname-of-machine>/unix:<no-of-display> MIT-MAGIC-COOKIE-1 <some number here>
因为我使用桥接docker设置,所以X转发端口不在本地侦听,因为sshd在容器中未运行。将上面的行更改为:
<ip-of-host>:<no-of-display> MIT-MAGIC-COOKIE-1 <some number here>
本质上:移除/unix零件。
/unix
<ip-of-host> 是sshd运行所在的IP地址。
<ip-of-host>
如上设置DISPLAY变量。
因此错误是DISPLAY环境变量中的名称与xauth list/ .Xauthority文件中的条目不是“相同”的,因此客户端可能无法正确进行身份验证。
我切换回不受信任的X11转发设置。
X11UseLocalhost no但是,sshd_config文件中的设置很重要,因为传入的连接将来自“不同”的计算机(docker容器)。