透過 SSH 以非 root 使用者身分啟動 x

透過 SSH 以非 root 使用者身分啟動 x

我有一個運行 Ubuntu 1804 的遠端虛擬機,並且想要運行 VNC。我正在使用 x11vnc,它需要運行 X 伺服器。目前,我透過 SSH 連線。

VM 有一張 Nvidia 卡,在使用 nvidia-xconfig 產生 xorg.conf 後,我可以使用 startx 啟動 X 會話,但只能以 root 身分啟動。任何後續透過 VNC 的連線都是使用 root 進行的,我想避免這種情況。

xorg.conf 檔案中的設備部分如下所示:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Tesla K80"
    BusID          "0:30:0"
EndSection

當嘗試以非 root 使用者身分啟動 startx 時,我得到以下資訊:

/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server

如果我更改 /etc/X11/Xwrapper.config 以允許任何人啟動x,我會得到以下資訊:

Couldn't get a file descriptor referring to the console

我一直在讀到透過 SSH 連線並不意味著您已連接到文字控制台,您需要執行 startx。嘗試使用 chvt 變更為文字控制台失敗不會改變任何內容。

我可以透過 SSH 啟動 X 嗎?

答案1

這裡是一個基於 的解決方案systemd-run,它欺騙性startx地認為它是從虛擬終端運行的。

答案2

您可以新增登入管理員(例如lightdm)並配置自動登入。甚至x11vnc在用戶會話開始時運行。

或者,您可以vncserver以使用者身分執行,然後透過 ssh 轉發直接連接到它:

ssh -L5904:localhost:5905 [email protected]
vncserver :5 # only if the server has not been started

然後,在客戶端上您可以運行:

xvncviewer localhost:4

相關內容