無法在 WSL 上使用 Ubuntu 產生 xauth 文件

無法在 WSL 上使用 Ubuntu 產生 xauth 文件

快速澄清:我在託管 WSL Ubuntu 發行版的 Windows 電腦上執行 X-server。我可以在本機和遠端啟動 GUI 程式。例如,我可以gvim從本機 WSL 啟動,也可以gvim在 SSH 會話時啟動。


WSL 非常適合與遠端伺服器通信,並且我設法使 X 轉發正常工作。然而,我不斷收到以下訊息額外的文字當我運行ssh -X user@machine_ip命令時。我想知道這是否意味著我所有的 GUI 會話都不安全?如果這樣的消息沒有表明太多潛在的威脅,我可以接受。

Warning: No xauth data; using fake authentication data for X11 forwarding.

我已運行以下安裝程式和設定步驟,但最後一步失敗:

mv ~/.Xauthority ~/old.Xauthority 
sudo apt install ssh xauth xorg -y
touch ~/.Xauthority
xauth generate $DISPLAY .

我會收到以下錯誤訊息

xauth: (argv):1:  couldn't query Security extension on display "localhost:0.0"  

我一直在三台 Windows 電腦(兩台筆記型電腦和一台桌上型電腦)上重現所描述的問題,但以某種方式設法消除了Warning: No xauth data;第四台桌上型電腦上的「 」訊息。然後,我將以下內容從第四台桌上型電腦複製到其餘三台計算機,但沒有任何改進。

  1. 文件的內容~/.Xauthority
  2. 新增了以下內容/etc/ssh/config
    ForwardAgent no
    ForwardX11 no
    ForwardX11Trusted yes
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    XauthLocation /usr/bin/xauth
  1. 新增了以下內容~/.ssh/config
Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
    Protocol 2
    GSSAPIDelegateCredentials no
    XAuthLocation /usr/bin/xauth

xauth最後,我在所有執行 WSL (Ubuntu 18.04 LTS) 的有問題的 Windows 機器上不斷收到以下與程式的「對話」 。

User @ machine ➜  ~  xauth                                                   
Using authority file /home/llinfeng/.Xauthority 
xauth> generate $DISPLAY                                                                                  
xauth: (stdin):2:  unable to open display "$DISPLAY".                                                     
xauth> generate $DISPLAY .                                                                            
xauth: (stdin):3:  unable to open display "$DISPLAY".                                                     
xauth> add $DISPLAY .                                                                                     
xauth: (stdin):4:  bad "add" command line                                                                 
xauth>    

在檢查手冊後xauthadd似乎是一個有效的命令。


我嘗試了三個 WSL 發行版,它們都產生相同的“ No xauth data”錯誤訊息。 Microsoft Store 提供的三個發行版包括:Ubuntu、Ubuntu 18.04 LTS 和 Pengwin (Debian)。


請告知如何取得xauth命令來產生一些正確的「xauth 資料」。

答案1

根據帖子和您的回答,除了此錯誤訊息之外,一切正常。

該訊息似乎說“虛假身份驗證數據”被發送到遠端會話。我不明白如何使用這些資料可以讓任何遠端攻擊者受益,所以我不明白為什麼簡單地忽略「無 xauth 資料」的警告是不安全的。

WSL 並不是 Linux 的完整實作。許多系統呼叫和函式庫已實現,但也有許多沒有實現。

我個人的觀點:我想說,您可以放心地將錯誤訊息視為來自此類錯誤實現或未實現的功能,然後忽略它。

答案2

你必須安裝像 Xming 這樣的 X 伺服器才能運作,因為 Windows 沒有 X 伺服器。

ssh 只是將遠端電腦的 X Server 請求轉發到您的伺服器,如果您沒有它,它會拋出錯誤。

安裝 Xming 後,在 WSL shell 上而不是在 ssh 中輸入以下命令

export DISPLAY=:0

每次開啟新終端時都必須執行此命令

您也可以將其添加到~/.bashrc

如果它不起作用,也安裝 xterm,它會安裝所有 X 庫。在Ubuntu上

sudo apt update;sudo apt install xterm

然後你可以像平常一樣使用 xauth

您也可以使用停用它xauth +

-Y如果您想使用 X 轉發,您也必須使用 ssh 的標誌。

ssh -Y user@host

如果您安裝了 xming 並且它不起作用,請確保設定了 DISPLAY 變數。該變數只能在 WSL 上設置,並且可以使用 xauth。

export DISPLAY=:0

答案3

可能與您的情況相關,也可能無關,但我在使用 xauth 命令時遇到了問題,因為:

  • 我正在安裝 drvfs 檔案系統,並將其用作我的家
  • drvfs 不支援連結-硬連結或符號連結
  • xauth 嘗試使用鏈接

無論如何,我透過將 XAUTHORITY 環境變數設定為 wsl ext4 檔案系統中的某個路徑來解決這個問題。

同上 .ICEauthority 和 ICEAUTHORITY 環境變數。 (儘管iceauth手冊頁沒有提到ICEAUTHORITY環境變量,但它似乎有效。)

相關內容