Ssh

如何通過 X11 使用完整的圖形桌面遠端登錄

  • April 15, 2020

我有兩台機器,都執行 kubuntu:伺服器和客戶端。我想從客戶端連接到伺服器並啟動完整的圖形界面,而不必擔心某些命令會以客戶端使用者身份執行。

所以,ssh -XC工作,我也可以從它開始圖形程序就好了。

但是,當我startkde在 ssh 控制台中鍵入時,它*顯示“KDE 似乎已經在此顯示器上執行”。*這是真的,但不是同一個使用者帳戶。

我嘗試退出圖形界面並從 tty 登錄,但隨後(不出所料)未能啟動任何圖形程序,包括 kde。

那麼我該如何做到這一點,以便我可以像使用本地使用者登錄一樣簡單地登錄?使用客戶端機器作為啞終端。

XDMCP就是為此而設計的。在您的伺服器上,您需要在桌面管理器中啟用 XDMCP 支持:

  • 如果您正在使用kdm,請查找
[Xdmcp]
Enable=false

在你的結束時kdmrc,更改falsetrue並重新啟動kdm

  • 如果您正在使用lightdm,請添加
[XDMCPServer]
enabled=true
port=177

/etc/lightdm/lightdm.conf並重新啟動lightdm

然後在您的客戶端上,使用

X -query ${SERVER_IP}

(使用適當的 IP 地址),並且您的伺服器的登錄螢幕應該顯示在您的客戶端上。

您可以通過 SSH 會話啟動視窗管理器,但您需要確保您的 X 伺服器當時沒有執行視窗管理器。

這可以通過兩種方式實現:

  1. 手動執行所有操作,而不是使用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 或其他一些身份驗證機制),您可以將以下行添加到您的.xinitrcor.xsession文件中的最後一行:

exec ssh -XC <host> startkde

要記住的是,您添加到這些文件中的任何內容都將被執行*,而不是*正常的 X11 會話設置。在某些情況下,您可能需要在登錄螢幕上選擇“標準 Xsession”選項。

即使您沒有無密碼 SSH,只要您已ssh-askpass安裝,它仍然可以工作。如果ssh確定它沒有控制終端但它確實有一個$DISPLAY變數集,它將使用它來詢問密碼。

這種方法的缺點是登錄“本地”機器變得更加困難。

引用自:https://unix.stackexchange.com/questions/327532