“su”,錯誤“X11 連接因身份驗證錯誤而被拒絕”
作為 root,我正在連接到遠端主機以執行命令。只有“standarduser”具有適當的 id 文件和正確的 .ssh/config,所以我先切換使用者:
su standarduser -c 'ssh -x remotehost ./remotecommand'
該命令工作正常,但儘管我使用了“-x”(禁用 X11-Forwarding)並且在 中禁用了 X11Forwards
/etc/ssh/ssh_config
,但我仍然收到錯誤消息:X11 connection rejected because of wrong authentication.
當我以“標準使用者”身份登錄時,我沒有收到錯誤消息。
這很煩人,因為我想將命令集成到 cron 作業文件中。我知道錯誤消息是指對 root 的 .XAuth 文件的錯誤身份驗證,但我什至沒有嘗試通過 X11 連接。
為什麼“ssh -x”沒有禁用 X11 連接並拋出錯誤消息?
更新:該消息僅在我在螢幕中登錄時顯示,當在本地機器本身(沒有螢幕)上使用上述命令時,我沒有收到錯誤消息,所以這也應該適用於 cron .
我還使用相同的命令啟動了相同的命令,
-v
並且令人驚訝地得到了錯誤消息 FIRST,甚至在來自 SSH 的狀態資訊之前:root@localhost:~# su standarduser -c 'ssh -x remotehost ./remotecommand' X11 connection rejected because of wrong authentication. OpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013
這導致我遇到了問題本身,它不是
ssh
拋出錯誤消息的,它是su
:root@localhost:~# su standarduser -c 'echo Hi' X11 connection rejected because of wrong authentication. Hi
為什麼我只在 內得到這個錯誤
screen
?如何禁用此錯誤消息?
似乎您的根目錄中缺少一些 X11魔術 cookie,
.Xauthority
而您standarduser
擁有。這是解決此問題的方法。短版(感謝@bmaupin)
standarduser@localhost:~$ xauth list | grep unix`echo $DISPLAY | cut -c10-12` > /tmp/xauth standarduser@localhost:~$ sudo su root@localhost:~$ xauth add `cat /tmp/xauth`
**注意:**檢查反引號!它們不能用引號代替!您需要
sudo
安裝才能繼續執行第二個命令!原長版
要解決問題,首先檢測使用哪個顯示編號
standarduser
:standarduser@localhost:~$ echo $DISPLAY localhost:21.0
在這種情況下,它是
21.0
。其次,顯示standarduser
cookie 列表:standarduser@localhost:~$ xauth list localhost/unix:1 MIT-MAGIC-COOKIE-1 51a3801fd7776704575752f09015c61d localhost/unix:21 MIT-MAGIC-COOKIE-1 0ba2913f8d9df0ee9eda295cad7b104f localhost/unix:22 MIT-MAGIC-COOKIE-1 22ba6595c270f20f6315c53e27958dfe localhost/unix:20 MIT-MAGIC-COOKIE-1 267f68b51726a8a381cfc10c91783a13
用於顯示的 cookie
21.0
是列表中的第二個,並以 . 結尾104f
。最後要做的是將這個特定的 cookie 添加到根的
.Xauthority
. 以 root 身份登錄並執行以下操作:root@localhost:~$ xauth add localhost/unix:21 MIT-MAGIC-COOKIE-1 0ba2913f8d9df0ee9eda295cad7b104f
X11 connection rejected because of wrong authentication
當您在su
Bash 腳本或screen
.感謝這個人的啟發。