我使用 Cygwin/X 通过 ssh 进入 VirtualBox 托管的 Ubuntu 服务器,该服务器已经安装了各种 X 组件:
ssh -X user@IPADDRESS
进入后,我可以运行gnome-terminal
,然后终端会弹出。进入后,我可以打开新选项卡,运行geany
(GEdit 等文本编辑器)等等,一切正常,窗口打开,一切正常。
然后,在某个时候,发生了一些事情,我无法打开任何使用 X 的新应用程序。现有应用程序运行良好,但任何新应用程序都会抱怨无法打开显示屏。例如:
user@SERVER:/mnt/smb$ geany
Geany: cannot open display
我思考在我使用 sudo 执行以下命令后,就会发生这种情况:
sudo apt-get install XXXX
问题启动之后,DISPLAY
环境变量跟之前一样。
唯一可能有用的其他信息是,当我第一次登录机器时,身份验证后立即出现以下内容:
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
有任何想法吗?
答案1
一些想法:
- 尝试以 身份调用 ssh
ssh -Y
,也就是说,您信任要 ssh 连接的机器。这可能只会消除第一个警告,但值得一试。 - 确保防火墙不会阻止任何通信
- 确保远程服务器没有启用 XC-SECURITY 扩展(SECURITY 显示在 xdpyinfo 的输出中)。
- 使用
ssh -vvv
以获取更多信息。
答案2
sudo 擦除你的显示屏。
sudo 文档建议在会话中间使用“pam_env”来恢复登录环境——问题是,它不能。只有在初次登录时,pam_env 才可以使用 REMOTE_HOST 和 DISPLAY 等内容,以便它可以将正确的值合并到您的环境中。稍后,再次调用 pam_env 只会确保这些值归零,(即使配置了 sudoers 文件以不重新初始化环境)。即由于 sudo 文档中给出的安全信息不正确,DISPLAY 无论如何都可能会被清除。
要修复它,您必须撤消发行版的错误配置设置(遵循了 sudo 建议),并配置 sudo 以免破坏您的环境。即使如此。如果您的环境中有您依赖的功能(我有一个功能来确定我是否在 cygwin 上 - 在两者上使用相同的 init shell) - 它们将被清除。因此,任何因为更方便或更有用而保存在功能中的安全和配置信息都将被 sudo 清除。
简而言之,sudo 需要修复或替换。
遗憾的是,在正确答案出现之前,悬赏就被迫结束了。不过,有正确答案总比没有好。