リモートデスクトップのソフト TightVNC のインストールと利用(Ubuntu にリモート接続)
Xvncは物理画面とは別のX画面を作るため,~/.vnc/xstartupでデスクトップ環境を起動する設定が必要である。VNCの通信は暗号化されないため,SSHトンネリングを併用する方法も説明する。
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを更新
sudo apt upgrade
# システム全体を最新の状態に更新 (依存関係の変更も伴う場合がある)
sudo apt full-upgrade
# 変更を反映させるために再起動する
sudo shutdown -r now
サーバ側の設定
- 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 - VNCパスワードの設定: VNC接続時に使用するパスワードを設定する.初めて実行すると,接続用パスワードと,読み取り専用パスワード(省略可)の入力を求められる.
vncpasswdTightVNC 1.3.10 のVNC認証では,パスワードは先頭8文字までが有効である(9文字目以降は無視される).そのため,VNCのパスワードだけに頼らず,後述の
SSHトンネリングと組み合わせて使う. - VNCサーバセッションの起動: 次のコマンドでVNCサーバセッションを起動する.
vncserver -localhost起動すると,ディスプレイ番号(例:
:1)とログファイルの場所が表示され,~/.vncディレクトリにxstartupファイルが作成される.ディスプレイ番号:1はポート 5901,:2はポート 5902 に対応する.-localhostを付けると,同一マシンからの接続だけを受け付ける.SSHトンネリング経由で接続する場合はこの指定を使う.ディスプレイ番号や解像度を指定する場合はvncserver :2,vncserver -geometry 1920x1080 :1のように指定する.セッションを終了するときはvncserver -kill :1を実行する.TightVNCが自動生成する
xstartupは,ウィンドウマネージャと端末だけを起動する内容である.デスクトップ環境を表示するには,次の手順でxstartupを書き換える. -
~/.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
- SSHサーバのインストール: VNCの通信は暗号化されない.SSHのポートフォワーディング(SSHトンネリング)を使うと,VNCの通信をSSHで暗号化できる.そのため,SSHサーバをインストールする.
sudo apt -y install openssh-serverポートフォワーディングには
/etc/ssh/sshd_configのAllowTcpForwardingがyesである必要がある(既定値はyes).この設定を変更した場合は,SSHサービスを再起動する.sudo systemctl restart ssh - ファイアウォールの設定: ファイアウォール(UFW)を有効にし,必要なポートだけを開放する.SSHトンネリング経由で接続する場合は,SSHのポート 22 だけを開放すればよい.
sudo apt install ufw sudo ufw allow 22 sudo ufw enableSSHトンネリングを使わず,VNCクライアントから直接接続する場合は,ディスプレイ番号に対応するポート(
:1ならポート 5901)を開放し,vncserverは-localhostを付けずに起動する.この場合,通信は暗号化されない.sudo ufw allow 5901sudo ufw enableを実行すると,許可したポート以外への接続は遮断される.
Windows マシンからの接続
Windows マシンからVNCサーバに接続するには,VNCクライアントソフトウェアを使用する.ここではMobaXTermを使用する場合を説明する.
- MobaXTerm のインストール: MobaXTermの入手とインストール方法は別ページ »で説明している.
- 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パスワードの入力を求められたら,サーバ側で設定したパスワードを入力する.
- コマンドによるSSHトンネリング(MobaXTermを使わない場合): Windows の
sshコマンドでも同じことができる.次のコマンドを実行した後,VNCクライアントでlocalhost:5901に接続する.ssh -L 5901:localhost:5901 ユーザ名@サーバのIPアドレス