我有一個從糟糕的萬維網通過 ssh 訪問的網關。沒問題,我得到:
remote ~$ ssh -X ingo@gateway
Debian GNU/Linux 10 (buster)
0:ingo@gateway ~$
現在我管理其他主機,例如檔案伺服器:
0:ingo@gateway ~$ ssh -X ingo@fileserver
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Debian GNU/Linux 10 (buster)
0:ingo@fileserver~$
我收到那個警告。
但是,如果我從本機網路上的管理主機直接 ssh 到檔案伺服器,它就可以正常工作而不會出現警告。我已經用其他登入驗證了這一點。我僅在從 ssh 進行 ssh 時收到警告。
為什麼我得到
警告:不受信任的 X11 轉送設定失敗:未產生 xauth 金鑰數據
僅在嵌套 ssh 登入上?
如何避免此警告並且可以成功使用更安全的不受信任的 X11 轉發?
不,我不想-Y
在 ssh 上使用不太安全的選項來進行可信任 X11 轉發,而不是使用已使用的-X
選項。
答案1
當您與 X11 伺服器的唯一連線是不受信任的,您無法進一步轉發。
不可信X11轉發的工作原理是ssh客戶端連接到本地顯示,並使用xauth generate $DISPLAY . untrusted
命令產生一個不受信任的金鑰/cookie。
但為此,該xauth
命令需要SECURITY
在顯示器上顯示擴展,與大多數擴展一樣,當客戶端xauth
使用不受信任的 cookie 進行身份驗證時,擴展會被隱藏和/或停用。
您可以透過以下方式輕鬆檢查:
$ touch /tmp/junk1 /tmp/junk2
$ chmod 600 /tmp/junk*
$ xauth -f /tmp/junk1 generate :0 . untrusted
$ XAUTHORITY=/tmp/junk1 oclock
# get a square oclock because the Shape extension is disabled
$ XAUTHORITY=/tmp/junk1 xdpyinfo | grep -A2 extensions
number of extensions: 2
BIG-REQUESTS
XC-MISC
# vs 28 or so on a trusted display
$ XAUTHORITY=/tmp/junk1 xauth -f /tmp/junk2 generate :0 . untrusted
xauth: (argv):1: couldn't query Security extension on display ":0"
後一步將導致您在 ssh 中收到警告。
所以至少第一個X11轉發應該是可信的,否則不行。
或者,您應該「跳過」中間主機,這將執行單一 X11 轉送:
ssh -X -o ForwardX11Trusted=no -J ingo@gateway ingo@fileserver
請注意,顯式的ForwardX11Trusted=no
,因為在 Debian 上,-X
和-Y
選項是等效的,你會得到一個值得信賴的無論您使用哪一種,預設都會進行 X11 轉送。