解决了。

解决了。

我正在尝试连接到 Ubuntu 服务器以使用 Qt-creator。在一切出错之前,我遵循了教程。我下载了 putty 和 Xming,一切运行正常。

然后,突然,在使用 Qt-creator 时,我无法保存任何更改。因此,我关闭了 Qt-creator 并重新启动了 putty 会话。它询问我用户名和密码(像往常一样),然后在登录服务器后,当我尝试运行 Qt-creator(像往常一样)时,出现以下消息:

PuTTY X11 proxy: wrong authorisation protocol attempted
Can't open display: localhost:10.0

因此,我尝试使用在互联网上找到的两种方法来解决问题:

第一个方法是使用dpyname protoname hexkey

xauth list 

它应该返回密钥,然后可以使用以下命令添加:

xauth add

然而,它没有起作用,因为xauth list命令没有返回任何内容。

第二个解决方案是:

./etc/ssh/sshd_config

打开文件:sshd_config 并编辑ForwardX11Trusted行以读取yes,如果不存在这样的行,则将其添加进去。

ForwardX11Trusted yes

然后重新启动 ssh 服务器,它就可以正常工作了。

但是,它还是不起作用。我无法sshd_config使用xdg-open或打开文件,gedit并且再次出现相同的消息。

那么为什么会发生这种情况?该如何解决?

答案1

以 su 身份登录时,在出现几个“PuTTY X11 代理:尝试了错误的授权协议”类型的错误后,我意识到这是一个身份验证问题。然后我记得将 .Xauthority 文件从我自己的配置文件 /home 目录复制到 /root。问题解决了!

答案2

解决了。

我通过结合使用上述两种方法解决了这个问题。

1.我在“/etc/ssh/sshd_config”中添加了以下行

ForwardX11Trusted yes

2. 我使用以下方式安装了 xauth

sudo apt-get install xauth

xauth list重启之前对我来说是空的。然而,重启后它就被填充了。我xauth list用 putty 测试后确实如此。

然后我重启了 ssh,一切正常。耶!

注意:我实际上做的是重启我的 Raspberry Pi

答案3

我在工作服务器上也遇到过类似的问题,因为主文件夹磁盘空间不足。登录后,它无法写入 Xauthority 文件,并且...无法转发。

释放空间解决了该问题。

我想,如果主文件夹或 .Xauthority 权限设置不当,导致您没有写权限,那么您也会遇到类似的问题。

答案4

关于.Xauthority文件是正确的,但覆盖另一个用户文件的做法应该让人停下来思考。考虑一下如果两个假设用户 Alice 和 Bob 都试图覆盖~root/.Xauthority同时登录。用户还需要记住,每当他们的个人副本更新时,都要进行粗鲁的复制,如果~root/.Xauthority由于不相关的问题(例如只读文件系统挂载或磁盘空间完全不足)而无法创建或更新。

可以通过利用权威环境变量,可以在用户登录时通过适当的登录专用脚本方便地设置。这由.bash_配置文件以下片段:

if test -n "${DISPLAY}"
then
    XAUTHORITY=`LANG=C xauth info | awk '{ print $NF; exit; }'`
    export XAUTHORITY
fi

请注意,调用LANG=C的前缀xauth可以防止在从右到左阅读顺序的区域设置中出现意外结果。

这种方法的优点是自动化,不需要对以下文件的写权限~根并防止多个同时使用的用户互相干扰。

sudo请注意,通过以下方式获取特权和成为以下人员之间的行为可能会有所不同(或其他用户)su。在某些系统上,pam_xauth模块启用于/etc/pam.d/su,它自动导入会话密钥并创建一个临时授权文件,该文件将由权威环境变量。在这样的系统上,默认情况下su会产生一个可以与 X11 显示器通信的 shell(这要归功于pam_xauth模块),而使用调用的命令sudo则不会。上述方法不会干扰su已启用pam_xauth模块,并且当pam_xauth模块未启用,su如果传递了适当的保留环境参数(例如su -p),则允许工作。如果您不确定系统的配置,请比较并对比以下输出:

sudo xauth info

对阵

su -c 'xauth info'

什么时候权威未设置,然后进行适当设置。

相关内容