リモートデスクトップのソフト TigerVNC のインストールと利用(Ubuntu にリモート接続)

UbuntuマシンへのTigerVNCを用いたVNCリモート接続手順、特に既存デスクトップ共有(scraping)に焦点を当てる。セキュリティ確保のためSSHゲートウェイ経由接続を推奨し、ポートフォワーディング設定は必須である。UFWでのポート制御も重要となる。安定した利用にはWaylandよりX11セッション選択が望ましい。パスワードは先頭8文字のみ有効である。

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うには, 次のコマンドを実行する.

Ubuntu のインストールは別ページ »で説明する.

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# 変更をシステム全体に確実に反映させるために再起動
sudo shutdown -r now

サーバ側の設定

  1. ポート 5900 で通信可能にする(他のポートは遮断)
    sudo apt install ufw
    sudo ufw allow 5900/tcp
    

    VNCの標準ポートである5900/tcpを開放する.ファイアウォールの設定を反映するためには、ufwサービスが有効になっている必要がある.ufwが有効になっていない場合は、sudo ufw enable コマンドで有効化する.有効化時には既存のSSH接続が切断される可能性があるため注意が必要である.

    セキュリティを高める場合は、SSH経由での接続を推奨する.その場合、UFWでVNCポート(5900/tcp)を外部に開放せず、SSHポート(22/tcp)のみを許可し、SSHトンネルを利用して接続する.

  2. ssh 経由でポートフォワーディングしたい場合,ssh サーバも起動する
    sudo apt -y install openssh-server
    sudo ufw allow 22/tcp
    

    /etc/ssh/sshd_config ファイルで次のように設定する.

    AllowTcpForwarding yes
    

    sshd_config の設定変更を反映させるためには、sshd サービスを再起動する必要がある.

    sudo systemctl restart sshd
    
  3. tigervnc のインストールと設定,古いパスワードデータの消去
    sudo apt install tigervnc-standalone-server
    sudo apt install tigervnc-scraping-server
    cd
    rm -rf .vnc
    

    cd コマンドでホームディレクトリに移動する.その後の rm -rf .vnc コマンドは、以前の設定やパスワード情報を含む隠しディレクトリ .vnc を削除するために実行する.これにより、VNCの設定を最初からやり直すことができる.

    ここでは tigervnc-standalone-servertigervnc-scraping-server の両方をインストールする.後述の x0tigervncserver コマンドは、既存の物理デスクトップを共有するための scraping サーバを起動するものである.この方式は、ログインしているユーザーのX環境を共有するため、サーバーマシンでデスクトップ環境が動作しており、ユーザーがログインしている必要がある.Ubuntu 24.04 LTSではWaylandがデフォルトのディスプレイサーバーとして採用される場合があるが、TigerVNC(特にx0tigervncserver)はX11環境での利用が安定しているため、VNC接続前にX11セッションを選択してログインすることが推奨される.

  4. パスワードを設定
    tigervncpasswd
    

    VNC接続時に使用するパスワードを設定する.このコマンドを実行するとパスワードの入力を求められる.TigerVNCのパスワードは、先頭から8文字までしか有効にならないという制限があるため注意が必要である.

  5. デスクトップを共有するようにサーバを起動
    x0tigervncserver PasswordFile=$HOME/.vnc/passwd
    

    上記のコマンドでVNCサーバを起動する.これは既存の物理デスクトップ (`:0`) を共有する scraping サーバである.
    外部のマシンから直接接続を許可するためには、通常 -localhost no オプションを付けて実行する必要がある.例: x0tigervncserver -localhost no PasswordFile=$HOME/.vnc/passwd
    共有する画面の解像度などを指定したい場合は、-geometry 幅x高さ オプションを追加する(例: x0tigervncserver -geometry 1920x1080 PasswordFile=$HOME/.vnc/passwd).

    なお、このコマンドはフォアグラウンドで実行されるため、ターミナルを閉じるとVNCサーバも停止する.実用的な運用では、バックグラウンドで実行するか、systemdなどのサービスとして登録することを検討する.

    VNCサーバのログファイルは ~/.vnc/<ホスト名>:<ディスプレイ番号>.log に保存される.VNC接続に問題が発生した場合のトラブルシューティングに役立つ.

Windows マシンからの接続

Windows マシンで MobaXTerm を使って接続する手順を示す.

  1. MobaXTerm のインストール: 別ページ »で説明する.
  2. MobaXTerm での操作

    「Session」 をクリックする. 「New Session」をクリックする. 「VNC」を選ぶ. IPアドレスに接続先のUbuntuマシンのIPアドレスまたはホスト名を設定する.
    VNCクライアントには、接続先のIPアドレスとディスプレイ番号(例: 192.168.1.10:0)またはポート番号(例: 192.168.1.10::5900)を指定する必要がある.TigerVNCサーバが :0 で起動した場合、デフォルトのポートは 5900 であるため、通常 IPアドレス:0 または IPアドレス::5900 と入力する.

    SSHトンネリングを併用することが推奨される.ssh ゲートウエイ経由で接続する場合は, 「Network settings」をクリックし, 「Connect through SSH gateway」をチェックする. Gate way SSH server の IP アドレスと「User」を設定する.

    SSHゲートウェイ経由でVNCに接続するためには、SSHセッション設定の「Network settings」において、ポートフォワーディングを設定する必要がある.「Forward local port to remote address and port」の項目で、ローカル側のポート(例: 5900)をリモート側の localhost:5900 に転送するように設定する.具体的には、Local port: 5900, Remote address: localhost, Remote port: 5900 のように設定する.これにより、MobaXTermのローカルポート5900への接続がSSHトンネルを通じてリモートホストのポート5900へ安全に転送される.

    接続後のパフォーマンスを向上させるため、MobaXTermのVNC設定において「Tight」エンコーディングを選択することを検討する.