vino のインストールと利用(Ubuntu にリモート接続)

Ubuntu Desktop に VNC プロトコルでリモート接続する Vino の設定手順を解説する。Ubuntu 24.04 LTS では Vino は非推奨であり Wayland 非対応のため Xorg が必要である。推奨される gnome-remote-desktop は RDP を使用する。VNC 代替には TigerVNC などがある。ファイアウォールと SSH トンネル設定も示す。

前準備

Ubuntu のシステム更新

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

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

サーバ側の設定

Vino は Ubuntu 24.04 LTS では公式には非推奨となっており,Wayland セッションでは動作しない点に注意が必要である.Ubuntu 24.04 LTS における推奨のリモートデスクトップ共有方法は RDP プロトコルを使用する gnome-remote-desktop である.しかし,VNC プロトコルを引き続き利用したい場合や,古いシステムとの互換性が必要な場合に Vino や他の VNC サーバを選択することがある.本記事では Vino を中心に解説するが,Ubuntu 24.04 LTS で VNC を使用する場合は,多くの場合 Xorg セッションを選択する必要があること,より新しい VNC サーバ(TigerVNC など)の利用も一般的であることを理解しておく必要がある.

  1. ファイアウォールの設定: ポート 5900, 5901 で通信可能にする(他のポートは遮断)

    VNC は通常ポート 5900 以降を使用する.外部からの接続を許可するために,ファイアウォールで必要なポートを開放する必要がある.ここでは一般的な VNC ポートである 5900 および 5901 を許可する設定を行う.なお,Ubuntu 24.04 LTS で推奨される gnome-remote-desktop は RDP プロトコルを使用し,通常ポート 3389 または 3390 を使用する.

    sudo apt install ufw
    sudo ufw allow 5900
    sudo ufw allow 5901
    
  2. SSH サーバのインストールと設定(SSH 経由でポートフォワーディングしたい場合)

    VNC の通信を SSH 経由でトンネル化することで,よりセキュアな接続が可能となる.ポートフォワーディングを利用するには,SSH サーバが起動している必要がある.デフォルトではポート 22 を使用するため,ファイアウォールでこれも許可する.

    sudo apt -y install openssh-server
    sudo ufw allow 22
    

    /etc/ssh/sshd_config で TCP フォワーディングが許可されていることを確認する.通常はデフォルトで許可されていることが多い.

    AllowTcpForwarding: yes
    
  3. Vino のインストールと設定

    Vino は GNOME デスクトップ環境に統合された VNC サーバである.以下のコマンドでインストールする.

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install vino
    cd
    

    注意: Ubuntu 22.04 LTS および 24.04 LTS では,デフォルトで Wayland セッションが使用される場合があるが,Vino は Xorg セッションでのみ動作する.Wayland セッションでリモート接続を行う場合は,RDP プロトコルを使用する gnome-remote-desktop の利用が推奨される.Vino を使用する場合は,ログイン画面で「Ubuntu on Xorg」などの Xorg セッションを選択してログインする必要がある.

    Vino の設定は通常 GNOME の設定ツール(「共有」など)から行うか,gsettings コマンドを使用して行う.Vino では vncpasswd コマンドは使用しない.パスワード認証を有効にするには,gsettings を使用して以下のコマンドを実行する.'xxxxxx' の部分を実際のパスワードに置き換える.パスワードは base64 でエンコードする必要がある.

    gsettings set org.gnome.Vino require-authentication true
    gsettings set org.gnome.Vino authentication-methods "['vnc']"
    gsettings set org.gnome.Vino vnc-password $(echo 'xxxxxx' | base64)
    

    通常,Vino サーバは GNOME セッションの起動時に自動的に開始されるように設定されている(GNOME の「共有」設定で有効化されている場合).手動で起動する場合のコマンドは以下である.

    /usr/lib/vino/vino-server
    

Windows マシンからの接続

Windows マシンから接続するには,VNC クライアントソフトウェアが必要である.Vino を使用する場合は VNC クライアントを用意する.RDP プロトコルを使用する gnome-remote-desktop に接続する場合は,Microsoft Remote Desktop Client などの RDP クライアントを使用する.ここでは例として MobaXTerm(VNC クライアント機能を持つ)を使用する場合の操作を説明する.

  1. MobaXTerm での操作

    MobaXTerm を起動し,「Session」をクリックする. 「New Session」をクリックし,「VNC」を選ぶ. リモート接続したい Ubuntu サーバの IP アドレスまたはホスト名を設定する.

    ssh ゲートウエイ経由で接続する場合は,「Network settings」をクリックし,「Connect through SSH gateway」をチェックする. Gateway SSH server の IP アドレスと「User」を設定する.

Vino サーバの手動起動と特殊なオプション

通常は Vino サーバはセッション起動時に自動実行されるが,特定のシナリオ(例: SSH トンネル経由でローカルディスプレイを共有する場合など)では,手動で起動する際に以下のようなオプションが必要となることがある.--display=localhost:0.0 オプションは,リモート接続元のローカルディスプレイ(SSH トンネル経由など)を共有対象として指定するものである.

/usr/lib/vino/vino-server -t --display=localhost:0.0