如何通過 X11 使用完整的圖形桌面遠端登錄
我有兩台機器,都執行 kubuntu:伺服器和客戶端。我想從客戶端連接到伺服器並啟動完整的圖形界面,而不必擔心某些命令會以客戶端使用者身份執行。
所以,
ssh -XC
工作,我也可以從它開始圖形程序就好了。但是,當我
startkde
在 ssh 控制台中鍵入時,它*顯示“KDE 似乎已經在此顯示器上執行”。*這是真的,但不是同一個使用者帳戶。我嘗試退出圖形界面並從 tty 登錄,但隨後(不出所料)未能啟動任何圖形程序,包括 kde。
那麼我該如何做到這一點,以便我可以像使用本地使用者登錄一樣簡單地登錄?使用客戶端機器作為啞終端。
XDMCP就是為此而設計的。在您的伺服器上,您需要在桌面管理器中啟用 XDMCP 支持:
- 如果您正在使用
kdm
,請查找[Xdmcp] Enable=false
在你的結束時
kdmrc
,更改false
為true
並重新啟動kdm
;
- 如果您正在使用
lightdm
,請添加[XDMCPServer] enabled=true port=177
/etc/lightdm/lightdm.conf
並重新啟動lightdm
。然後在您的客戶端上,使用
X -query ${SERVER_IP}
(使用適當的 IP 地址),並且您的伺服器的登錄螢幕應該顯示在您的客戶端上。
您可以通過 SSH 會話啟動視窗管理器,但您需要確保您的 X 伺服器當時沒有執行視窗管理器。
這可以通過兩種方式實現:
- 手動執行所有操作,而不是使用
startx
或顯示管理器:首先,啟動你的 X 伺服器:
X -nolisten tcp :0
現在切換到另一個虛擬控制台(例如,按 ctrl+alt+f2),然後輸入:
DISPLAY=:0 ssh -XC <host> startkde
現在切換回第一個虛擬控制台並正常使用您的 X 會話。這種方法的缺點是它不包括
xauth
設置(因此理論上遠端機器上的每個人都可以連接到您的 X 會話,這是一個安全風險);您可能希望添加它。 2. 使用.xinitrc
(for startx) 或.xsession
(for display manager) 文件來修改您的視窗管理器:如果您已將系統設置為無密碼 SSH 工作(例如,通過 ssh 密鑰,或使用 Kerberos 或其他一些身份驗證機制),您可以將以下行添加到您的
.xinitrc
or.xsession
文件中的最後一行:exec ssh -XC <host> startkde
要記住的是,您添加到這些文件中的任何內容都將被執行*,而不是*正常的 X11 會話設置。在某些情況下,您可能需要在登錄螢幕上選擇“標準 Xsession”選項。
即使您沒有無密碼 SSH,只要您已
ssh-askpass
安裝,它仍然可以工作。如果ssh
確定它沒有控制終端但它確實有一個$DISPLAY
變數集,它將使用它來詢問密碼。這種方法的缺點是登錄“本地”機器變得更加困難。