GDMを使用してログインしたVNCサーバー

GDMを使用してログインしたVNCサーバー

リモートコンピュータを開いて物理的に存在せずにアクセスできるように、Debianコンピュータでサービスとして実行されるVNCサーバーを設定したいと思います。

1つのオプションは、ユーザーバスで設定することです。

$ 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には、端末に物理的に座ってログインする必要があります。 loginを使用する前にログインすると、XAUTHORITYサービスは失敗します。私はandを使ってこの問題を解決しました。sshgdm3AutomaticLoginEnable=TrueAutomaticLogin=stew/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

116パスがシステムユーザー:(UID)所有であることを示すこのコマンドを使用して、XAUTHORITYパスを見つけました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

VNCがWaylandと機能しないようで、設定を続けるWaylandEnable=false必要があります。/etc/gdm3/daemon.conf

一見するとこれが効果があるようです。gdmログイン画面が表示されます。ただし、そのユーザーとしてログインしようとすると、情報がauth他のユーザーに転送され、接続が切断されます。

gdmでログインできるようにVNCを設定する方法はありますか?

ベストアンサー1

完璧ではありませんが、ここに解決策があります。

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解放を停止します。5900x11vnc

それから実行されました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セッションからログアウトすると、再度ログインできないことが確実です。

私も私たちがsystemctl stopすることが好きではありませんExecStartPre=

おすすめ記事