SSHトンネルを介してアクセスできるように、起動中にログインせずにx11vncを開く方法は?

SSHトンネルを介してアクセスできるように、起動中にログインせずにx11vncを開く方法は?

Ubuntu 19.04を使用しています。起動中にUbuntuコンピュータのVNCサーバーを開くようにしたいと思います。モニターが接続されていません。 Ubuntuデスクトップ全体をリモートで実行できるようにしたいです。

SSHサーバーが機能するように管理し、x11vncサーバーをMac VNCクライアントに表示することもできます。

ただし、これはUbuntuに手動でログインしてコマンドを実行した場合にのみ機能します。

x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5900 -share

MacでSSHトンネルを作成し、localhost:5900接続を使用して接続できます。

次に、起動中にx11vncを開くようにするために、次のようにしました。

  1. sudo nano /lib/systemd/system/x11vnc.service

  2. 次のテキストを保存しました(123は私のgdm UID番号です)。

    [Unit]
    Description=Start x11vnc at startup.
    After=multi-user.target
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/x11vnc -loop -forever -bg -rfbport 5900 -xkb -noxrecord -noxfixes -noxdamage -shared -norc -auth /run/user/123/gdm/Xauthority -rfbauth /etc/x11vnc.pass
    
    [Install] 
    WantedBy=multi-user.target
    
  3. 次のコマンドを実行しました。

    sudo systemctl enable x11vnc.service
    sudo systemctl daemon-reload
    sudo systemctl start x11vnc.service
    
  4. 再起動しましたが、Ubuntuコンピュータにログインしていません。

  5. SSHに接続し、Macでトンネルを正常に作成しました。

  6. VNCサーバーに接続しようとしましたが失敗しました。

  7. その後、Ubuntuコンピュータに手動でログインしました。

  8. VNCサーバーに接続しようとしましたが、正常に接続されましたが、黒い画面が表示されます。

したがって、Ubuntuセッションに手動でログインしたときにのみサービスが開始されることがわかります。

私が達成したいことを達成する方法はありますか?また、他のサーバーを使用する意向があります。 x11vncのみを使用するため、新しいデスクトップをインストールする必要はありません。

答え1

VNCサーバーを実行する方法は2つあります。

  • 物理コンソールと並行して実行 - VNCセッションは独立しており、物理コンソールユーザーが何ができるかを見ることはできません。
  • 物理コンソールとの統合:ディスプレイが共有されるため、実際の座席から出てVNCを介して同じセッションに接続でき、その逆も可能です。

物理コンソールは通常、xauth で保護されます。 VNCサーバーを統合する方法は、ユーザーによって異なります。ディスプレイマネージャ。私は使用します光DM例えば。

Lightdmはファイルを生成し/run/lightdm/root/、x11vncに次のように使用するように指示できます。-display :0 -auth '/run/lightdm/root/:0'

あるいは、-findauthよく知られているディスプレイマネージャにオプションを使用することもできます。

したがって、systemdサービスを開始しないでください。まず、さまざまなオプションを使用してx11vncを手動で起動して接続できることを確認してください。

/lib/systemd/system/x11vnc.serviceまた、パッケージが更新されると上書きされるため、編集しないでください。コピーを作成する/etc/systemd/system/か、必要な設定のみを上書きすることをお勧めします。/etc/systemd/system/x11vnc.service.d/custom.conf

私は働くx11vnc.service

[Unit]
Description=VNC Server for X11
Requires=graphical.target
After=graphical.target

[Service]
ExecStart=/usr/local/bin/x11vnc-lightdm

[Install]
WantedBy=graphical.target

/usr/local/bin/x11vnc-lightdm:

#!/bin/bash
OPTS=
exec /usr/bin/x11vnc \
    $OPTS \
        -rfbauth /root/.vnc/passwd -forever -loop -display :0 -auth '/run/lightdm/root/:0'

関連情報