リモートコンピュータを開いて物理的に存在せずにアクセスできるように、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を使ってこの問題を解決しました。ssh
gdm3
AutomaticLoginEnable=True
AutomaticLogin=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
解放を停止します。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セッションからログアウトすると、再度ログインできないことが確実です。
私も私たちがsystemctl stop
することが好きではありませんExecStartPre=
。