快速澄清:我在託管 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;
第四台桌上型電腦上的「 」訊息。然後,我將以下內容從第四台桌上型電腦複製到其餘三台計算機,但沒有任何改進。
- 文件的內容
~/.Xauthority
, - 新增了以下內容
/etc/ssh/config
:
ForwardAgent no
ForwardX11 no
ForwardX11Trusted yes
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
XauthLocation /usr/bin/xauth
- 新增了以下內容
~/.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>
在檢查手冊後xauth
,add
似乎是一個有效的命令。
我嘗試了三個 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環境變量,但它似乎有效。)