帶有 GDM 登錄的 VNC 伺服器
我想在 Debian 機器上設置 VNC 伺服器以作為服務執行,這樣我就可以打開遠端機器並訪問它,而無需親自到場。
一種選擇是在使用者匯流排中設置它:
$ systemctl --user cat vnc.service # /home/stew/.config/systemd/user/vnc.service [Unit] Description=VNC Server After=default.target [Service] ExecStart=x11vnc -nevershared -forever -nopw [Install] WantedBy=default.target
gdm3
這可行,但仍然需要我親自坐在終端上登錄XAUTHORITY
才能進行任何遠端工作。如果我ssh
在使用 登錄之前登錄gdm3
,則服務失敗。AutomaticLoginEnable=True
我通過使用和AutomaticLogin=stew
in來解決這個問題/etc/gdm3/daemon.conf
。相反,我希望能夠使用 VNC 而無需先以特定使用者身份登錄(類似於 RDP)。我認為最好的方法是使用
-nopw
螢幕gdm3
。我試圖這樣做:
$ systemctl cat vnc.service # /etc/systemd/system/vnc.service [Unit] Description=VNC Service (system-wide) After=graphical.target [Service] ExecStart=x11vnc -auth /run/user/116/gdm/Xauthority -display :0 -nopw [Install] WantedBy=graphical.target
我使用此命令找到了 XAUTHORITY 路徑,該路徑顯示該路徑歸 UID
116
(系統使用者:)所有Debian-gdm
。stew ~ $ ps wwwwaux | grep auth root 1033 0.1 0.5 189548 63596 tty1 Sl+ 14:32 0:00 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/116/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -novtswitch -verbose 3
我還需要設置
WaylandEnable=false
,/etc/gdm3/daemon.conf
因為 VNC 似乎不適用於 Wayland。起初,這似乎運作良好。我得到
gdm
登錄螢幕。但是,當我嘗試以使用者身份登錄時,auth
會轉移到另一個使用者並且我已斷開連接。有沒有辦法設置 VNC 以便我可以通過 gdm 登錄?
這不是無縫的,但這裡有一個解決方案。
我們從執行 VNC 並將我們連接到 GDM 登錄螢幕的服務開始
$ systemctl cat vnc-gdm.service # /etc/systemd/system/vnc-gdm.service [Unit] Description=VNC Server (gdm) After=graphical.target [Service] ExecStart=bash -c 'x11vnc -auth /run/user/$(id -u Debian-gdm)/gdm/Xauthority -display :0 -nopw' Restart=on-failure RestartSec=3 [Install] WantedBy=graphical.target
然後對於我們想要支持的每個使用者,我們添加另一個 VNC 服務。這將每 2 秒輪詢一次,
ExecStartPre=
以查看該使用者是否有Xorg
實例。發生這種情況時,它將停止vnc-gdm.service
釋放埠5900
,以便它自己的實例x11vnc
可以綁定到它。然後它執行
x11vnc
。$ systemctl cat vnc-stew.service # /etc/systemd/system/vnc-stew.service [Unit] Description=VNC Server (stew) After=graphical.target [Service] User=stew ExecStartPre=sh -c 'while ! pgrep -U stew Xorg; do sleep 2; done' ExecStartPre=+systemctl stop vnc-gdm.service ExecStart=x11vnc -many -shared -display :1 -auth /home/stew/.Xauthority -rfbauth /home/stew/.vnc/passwd Restart=on-failure RestartSec=3 [Install] WantedBy=graphical.target
我說這不是無縫的,因為一旦你通過 gdm 登錄:你的連接就會被切斷,你需要重新連接到你的新顯示器。我也沒有對多個使用者進行過測試。另外,如果我退出 X-session,我很確定我將無法重新進入。
我也不喜歡我們
systemctl stop
在ExecStartPre=
.