發(fā)布時間:2021-09-06 11: 47: 10
在上一篇中,我們介紹了通過Xmanager 7(Win系統(tǒng))中的Xstart會話或者Xshell(Win系統(tǒng))中的SSH會話來運行X應(yīng)用程序(例如 Xterm)時,出現(xiàn)如下圖所示“Can’t open display:localhost:16.0”這樣的錯誤消息的兩種可能原因。
上次介紹的兩種報錯原因分別是:
解決方法在上一期中也有比較詳細的說明,接下來,我們就繼續(xù)排查此類報錯的另兩種可能原因,均是由X11轉(zhuǎn)發(fā)錯誤所導致的。
Xshell中的SSH會話可以使用X11轉(zhuǎn)發(fā)功能,通過安全的SSH隧道運行遠程X應(yīng)用程序。此時會驗證客戶端和服務(wù)器之間的Cookie,建立SSH連接后,Cookie會寫入用戶目錄中的.Xauthority文件,只有通過驗證的授權(quán)用戶才能運行 X11?應(yīng)用程序。
如果寫入此cookie時出現(xiàn)錯誤或無法讀取記錄的值,則 X11?轉(zhuǎn)發(fā)可能會失敗,這時我們也可能會看到錯誤消息。
Cookie值記錄錯誤也有很多種可能原因:
解決方法:需要在SSH服務(wù)端配置文件sshd_config中進行路徑設(shè)置,sshd_config文件的路徑一般是/etc/ssh/sshd_config。
指定 xauth的絕對路徑,默認路徑是 /usr/X11R6/bin/xauth
Ubuntu下安裝
Redhat下安裝
.Xauthority文件可以在我們的用戶主目錄中找到,用于存儲xauth用于X會話的身份驗證。
檢查我們的用戶主目錄的訪問權(quán)限是否正確設(shè)置,如果設(shè)置不正確就需要改正。通過以下命令可以更改以前由ROOT擁有的.Xauthority文件所有權(quán):
sudo chown username:username .Xauthority
另外如果用戶主目錄中還有.Xauthority-c或.Xauthority-l文件,則需要將它們刪除。這些文件正常情況下在會話結(jié)束后會自動刪除,但也會由一些特殊情況會讓它們保留下來。如果這些文件存在,那我們會無法將正確的信息寫入.Xauthority文件。
如果使用su命令切換了用戶,DISPLAY環(huán)境變量會正確繼承,但Cookie可能不會。于是當我們從一個普通用戶切換到另一個普通用戶時,cookie值可能無法正確繼承 導致報錯。
如果切換用戶后需要使用X應(yīng)用,則需要知道前一個用戶的cookie值。
在極少數(shù)情況下,即使在 SSH?服務(wù)器的設(shè)置中設(shè)置并啟用了X11轉(zhuǎn)發(fā),X連接也可能會失敗,從而導致“無法打開顯示...”錯誤消息。
在這種情況下,您應(yīng)該使用以下命令重新啟動ssdh保護進程:
# systemctl restart sshd
以上便是使用SSH會話運行X程序時出現(xiàn)localhost錯誤的4個可能原因和解決方法,大家如果想要了解更多使用Xshell連接服務(wù)器的使用技巧,敬請關(guān)注Xshell中文網(wǎng)。
作者:?
展開閱讀全文
︾