我正在用 Raspberry Pi 开发机器人,但在 X11 转发方面遇到了问题。当我要运行我的脚本时:
sudo python myscript.py
我收到错误:
Putty X11 proxy: Authorisation not recognised
(Imagen Combinada:3642) : Gtk-Warning **: cannot open display: localhost:10.0
我正在使用带有 Xming 的 PuTTY(启用 SSH -> X11 -> 启用 X11 转发)。
有人知道这里发生了什么以及我该如何解决吗?
答案1
我遇到了同样的问题,并找到了解决方案。错误原因是没有将 MIT-MAGIC-COOKIE-1 传递给根目录。此文件存储在 ~/.Xauthority 上。您有三个选择。
1)快速修复将加载所有用户环境
$ sudo -E python myscript.py
-E 选项将从用户的主目录加载 root shell 环境。因此,将读取用户的 ~/.Xauthority。但是,这有点暴力破解,出于安全考虑并不推荐。
2)列出密钥并将其加载到根目录 /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
3)设置并传递XAUTHORITY 环境值。
您可以使用 XAUTHORITY 指定 .Xauthority 文件,但是默认情况下它未设置,只是从 ~/.Xauthority 加载文件。因此,请以这种方式提供 sudo 选项。
$ sudo XAUTHORITY=${HOME}/.Xauthority python myscript.py
root 将获得XAUTHORITY=/home/(user)/.Xauthority,并相应地读取文件。
答案2
这可能是sudo
导致问题的原因。要检查,您可以运行不带 的 X 应用程序(例如 xeyes)sudo
。 如果这个有效,您可以通过将xauth
cookie 添加到 root 来运行您的 python 脚本:
dave@raspberrypi$ xauth list
raspberrypi/unix:10 MIT-MAGIC-COOKIE-1 1e656e1......2d6d5a
dave@raspberrypi$ sudo su
# paste in the output from 'xauth list' below:
root@raspberrypi$ xauth add raspberrypi/unix:10 MIT-MAGIC-COOKIE-1 1e656e1......2d6d5a
dave@raspberrypi$ sudo python myscript.py