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転送を有効にする)。
ここで何が起こっているのか、どうすれば解決できるのか誰かが知っていますか?
私は同じ問題を抱えていて、解決策を見つけました。エラーの理由は、MIT-MAGIC-COOKIE-1をルートに渡していないことです。このファイルは〜/ .Xauthorityに保存されます。 3つのオプションがあります。
1)クイックフィックスは、すべてのユーザー環境をロードします
$ Sudo -E python myscript.py
-Eオプションは、ユーザーのホームディレクトリからルートシェル環境をロードします。したがって、ユーザーの〜/ .Xauthorityが読み取られます。ただし、これはややブルートフォースであり、セキュリティ上の懸念からはあまりお勧めできません。
2)キーを一覧表示し、ルート/root/.Xauthorityにロードします
キーをルート.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
)XAUTHORITY環境値をセットアップして渡す。
XAUTHORITYを使用して.Xauthorityファイルを指定できますが、デフォルトでは設定されておらず、〜/ .Xauthorityからファイルをロードするだけです。したがって、Sudoオプションをこのように指定します。
$ Sudo XAUTHORITY=${HOME}/.Xauthority python myscript.py
rootはXAUTHORITY =/home /(user)/。Xauthorityを取得し、それに応じてファイルを読み取ります。
Sudo
が問題の原因である可能性があります。確認するには、Sudo
なしでXアプリケーション(xeyesなど)を実行できます。 Ifこれが機能する場合、xauth
Cookieをルートに追加することにより、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