错误 Putty X11 代理:无法识别授权

Dav*_*ave 3 linux ssh putty x11-forwarding raspberry-pi

我正在使用 Raspberry Pi 开发机器人,但在 X11 转发方面遇到问题。当我要运行我的脚本时:

   sudo python myscript.py
Run Code Online (Sandbox Code Playgroud)

我收到错误:

   Putty X11 proxy: Authorisation not recognised
   (Imagen Combinada:3642) : Gtk-Warning **: cannot open display: localhost:10.0
Run Code Online (Sandbox Code Playgroud)

我正在使用 PuTTY 和 Xming(启用 SSH -> X11 -> 启用 X11 转发)。

有人知道这里会发生什么,我该如何解决?

小智 6

我遇到了同样的问题并找到了解决方案。错误的原因是没有将 MIT-MAGIC-COOKIE-1 传递给根。此文件存储在 ~/.Xauthority 上。你有三个选择。

1)快速修复将加载所有用户环境

$ sudo -E python myscript.py
Run Code Online (Sandbox Code Playgroud)

-E 选项将从用户的主目录加载 root shell 环境。因此,将读取用户的 ~/.Xauthority。然而,这有点蛮力,不推荐用于安全问题。

2)列出密钥并将其加载到root /root/.Xauthority

另一种将密钥直接加载到 root .Xauthority 的方法。

pi@RPi-Dev:~$ xauth list
RPi-Dev/unix:10  MIT-MAGIC-COOKIE-1  5cxxxxxxxxxxxxxxxxxxxxxxxxxxx3d3
pi@RPi-Dev:~$ sudo -s
root@RPi-Dev:/home/pi# xauth add RPi-Dev/unix:10  MIT-MAGIC-COOKIE-1  5c5cxxxxxxxxxxxxxxxxxxxxxxxxxxxd3
Run Code Online (Sandbox Code Playgroud)

3) 设置并传递 XAUTHORITY 环境值。

你可以用 XAUTHORITY 指定 .Xauthority 文件,但是,默认情况下它没有设置,只是从 ~/.Xauthority 加载文件。所以,以这种方式给 sudo 选项。

$ sudo XAUTHORITY=${HOME}/.Xauthority python myscript.py
Run Code Online (Sandbox Code Playgroud)

root 将获得 XAUTHORITY=/home/(user)/.Xauthority,并相应地读取文件。