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

Ubuntu 24.04 LTSにTightVNCサーバをインストールし,リモート接続する方法を説明する。TightVNCのXvncは物理画面とは別のX画面を作るため,~/.vnc/xstartupでデスクトップ環境を起動する設定が必要である。VNCの通信は暗号化されないため,SSHトンネリングを併用する方法も説明する。

前準備

Ubuntu のシステム更新

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

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

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを更新
sudo apt upgrade
# システム全体を最新の状態に更新 (依存関係の変更も伴う場合がある)
sudo apt full-upgrade
# 変更を反映させるために再起動する
sudo shutdown -r now

サーバ側の設定

  1. TightVNCサーバとデスクトップ環境のインストール: Ubuntu 24.04 LTS の universe リポジトリには tightvncserver (バージョン 1.3.10) がある.

    TightVNCの Xvnc は3Dアクセラレーションを持たない仮想的なX画面を作る.Ubuntu標準の GNOME Shell はこの画面では動作しないため,Xvnc 上で動くデスクトップ環境を別途インストールする.ここでは Xfce を使う(GNOME Flashback を使う場合は2番目のコマンドを実行する).

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install tightvncserver dbus-x11
    
    # デスクトップ環境 (どちらか一方)
    sudo apt -y install xfce4 xfce4-goodies
    # sudo apt -y install gnome-session-flashback
    

    以前のVNC設定を初期化する場合は,ホームディレクトリの .vnc ディレクトリを削除する.このディレクトリ内のパスワードファイルや xstartup はすべて削除される.

    cd
    rm -rf .vnc
    
  2. VNCパスワードの設定: VNC接続時に使用するパスワードを設定する.初めて実行すると,接続用パスワードと,読み取り専用パスワード(省略可)の入力を求められる.
    vncpasswd
    

    TightVNC 1.3.10 のVNC認証では,パスワードは先頭8文字までが有効である(9文字目以降は無視される).そのため,VNCのパスワードだけに頼らず,後述の SSHトンネリング と組み合わせて使う.

  3. VNCサーバセッションの起動: 次のコマンドでVNCサーバセッションを起動する.
    vncserver -localhost
    

    起動すると,ディスプレイ番号(例: :1)とログファイルの場所が表示され,~/.vnc ディレクトリに xstartup ファイルが作成される.ディスプレイ番号 :1 はポート 5901,:2 はポート 5902 に対応する.

    -localhost を付けると,同一マシンからの接続だけを受け付ける.SSHトンネリング経由で接続する場合はこの指定を使う.ディスプレイ番号や解像度を指定する場合は vncserver :2vncserver -geometry 1920x1080 :1 のように指定する.セッションを終了するときは vncserver -kill :1 を実行する.

    TightVNCが自動生成する xstartup は,ウィンドウマネージャと端末だけを起動する内容である.デスクトップ環境を表示するには,次の手順で xstartup を書き換える.

  4. ~/.vnc/xstartup ファイルの設定: VNCセッションで起動するデスクトップ環境は ~/.vnc/xstartup で決まる.エディタで ~/.vnc/xstartup を開き,次の内容にする.
    #!/bin/sh
    
    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS
    
    [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
    vncconfig -iconic &
    
    # Xfce デスクトップ環境を起動する
    exec startxfce4
    
    # GNOME Flashback を使う場合は,上の行の代わりに次の行を使う
    # exec gnome-session --session=gnome-flashback-metacity
    

    ファイルを保存した後,実行権限を付与する.

    chmod +x ~/.vnc/xstartup
    

    設定を反映するには,既存のセッションを終了してから起動し直す.

    vncserver -kill :1
    vncserver -localhost
    
    VNCサーバ起動時のスクリーンショット例
  5. SSHサーバのインストール: VNCの通信は暗号化されない.SSHのポートフォワーディング(SSHトンネリング)を使うと,VNCの通信をSSHで暗号化できる.そのため,SSHサーバをインストールする.
    sudo apt -y install openssh-server
    

    ポートフォワーディングには /etc/ssh/sshd_configAllowTcpForwardingyes である必要がある(既定値は yes).この設定を変更した場合は,SSHサービスを再起動する.

    sudo systemctl restart ssh
    
  6. ファイアウォールの設定: ファイアウォール(UFW)を有効にし,必要なポートだけを開放する.SSHトンネリング経由で接続する場合は,SSHのポート 22 だけを開放すればよい.
    sudo apt install ufw
    sudo ufw allow 22
    sudo ufw enable
    

    SSHトンネリングを使わず,VNCクライアントから直接接続する場合は,ディスプレイ番号に対応するポート(:1 ならポート 5901)を開放し,vncserver-localhost を付けずに起動する.この場合,通信は暗号化されない.

    sudo ufw allow 5901
    

    sudo ufw enable を実行すると,許可したポート以外への接続は遮断される.

Windows マシンからの接続

Windows マシンからVNCサーバに接続するには,VNCクライアントソフトウェアを使用する.ここではMobaXTermを使用する場合を説明する.

  1. MobaXTerm のインストール: MobaXTermの入手とインストール方法は別ページ »で説明している.
  2. MobaXTerm での接続操作:

    MobaXTermを起動し,「Session」 をクリックする. 表示されるウィンドウで「New Session」をクリックする. セッションタイプ一覧から「VNC」を選択する.

    VNCサーバのIPアドレス(またはホスト名)とポート番号を「Remote host (VNC server)」欄に設定する.ポート番号は,サーバ側で起動したセッションのディスプレイ番号に対応する(ディスプレイ番号 :1 ならポート 5901).入力欄には server_ip_address:5901 または server_ip_address:1 の形式で入力する.

    SSHトンネリングを利用して接続する場合は,以下の手順を追加で行う.

    • 「Network settings」のタブをクリックする.
    • 「Connect through SSH gateway」のチェックボックスをオンにする.
    • 「Gateway SSH server」の欄にSSHサーバのIPアドレスまたはホスト名を入力する.
    • 「User」の欄にSSH接続に使用するユーザ名を入力する.必要に応じて,SSHポート番号や認証方法も設定する.

    設定後,「OK」をクリックして接続を開始する.VNCパスワードの入力を求められたら,サーバ側で設定したパスワードを入力する.

  3. コマンドによるSSHトンネリング(MobaXTermを使わない場合): Windows の ssh コマンドでも同じことができる.次のコマンドを実行した後,VNCクライアントで localhost:5901 に接続する.
    ssh -L 5901:localhost:5901 ユーザ名@サーバのIPアドレス