UbuntuでVNCを使ってリモートデスクトップ環境を構築する方法|日本語入力も対応

目次

1. はじめに

UbuntuでVNCを利用する理由とは?

Linuxの中でも人気の高いディストリビューション「Ubuntu」は、開発用途やサーバー用途などさまざまな場面で利用されています。通常、Ubuntuサーバーはコマンドラインベースで操作されますが、GUI(グラフィカル・ユーザー・インターフェース)を利用したい場面も多々あります。

そこで登場するのが、VNC(Virtual Network Computing)という技術です。VNCを使えば、ネットワークを通じてUbuntuマシンにリモートから接続し、まるでローカルのデスクトップを操作しているかのような感覚で作業ができます。これにより、複雑なコマンドを打たなくても視覚的に操作できるため、Linux初心者やWindowsユーザーにとってもハードルが下がります。

リモートデスクトップ環境のニーズ

最近では、リモートワークの拡大により、UbuntuにVNCを導入してリモートデスクトップ環境を構築する需要が高まっています。 特に、開発用のUbuntuサーバーにVNCを入れてGUI操作を可能にすることで、設定やメンテナンスの効率が向上します。

さらに、クラウドやVPS上のUbuntu環境をGUI付きで操作したいというニーズもあり、VNCはその橋渡し的な役割を果たします。

本記事の対象読者と目的

本記事は、以下のような方を対象にしています:

  • 初めてUbuntuにVNCを導入しようとしている方
  • CLIだけでは不安でGUI環境を構築したい方
  • SSHだけでの作業に限界を感じているが、RDPではなくVNCを選びたい方
  • GUIを使いながら、さらに日本語入力も含めた快適なリモート環境を整えたい方

本記事では、UbuntuにVNCサーバーを導入し、リモートからデスクトップ環境に接続できるようにするまでの流れを、初心者にもわかりやすく丁寧に解説していきます。日本語入力の対応方法SSHトンネルによるセキュアな接続まで含めて、実用的な内容を網羅しているのが特徴です。

侍エンジニア塾

2. 前提条件と準備

VNCをUbuntuに導入する前に確認すべきこと

VNCサーバーをUbuntuにインストールして利用するには、いくつかの前提条件と事前準備が必要です。この章では、作業を始める前に確認しておくべきポイントを整理します。

対象とするUbuntuのバージョン

この記事では、Ubuntu 20.04 LTSまたはUbuntu 22.04 LTSを対象とします。これらのバージョンは現在も多く利用されており、VNCサーバーや日本語入力環境などとの互換性も安定しています。

もし他のバージョンを使用している場合でも、基本的な操作は共通していますが、一部のパッケージ名や動作が異なる可能性があるため注意が必要です。

サーバーの要件と構成

VNCはGUIベースのリモート接続方式であるため、ある程度のリソース(CPU・メモリ)を必要とします。以下は、UbuntuにVNCを導入する際の推奨構成です:

  • CPU:デュアルコア以上(最低でも1GHz程度)
  • メモリ:2GB以上推奨(Xfceなど軽量デスクトップ環境を想定)
  • ストレージ:10GB以上の空き容量
  • ネットワーク:SSH接続が可能で、ファイアウォールのVNCポート(デフォルトでは5901など)を開放可能

必要な権限とツール

VNCサーバーのインストールおよび設定には、以下の権限とツールが必要です:

  • sudo権限を持つユーザーアカウント
  • SSHクライアント(WindowsであればPuTTY、macOSやLinuxではターミナル)

リモートでのセットアップを行うため、SSHが有効化されているUbuntuサーバーであることも前提となります。まだSSHが使えない場合は、sudo apt install openssh-server でSSHサーバーを導入しておきましょう。

使用予定のデスクトップ環境の選定

VNCはGUIを転送する技術のため、Ubuntuにデスクトップ環境が必要です。しかし、一般的な「Ubuntu Desktop」に含まれるGNOMEは重く、サーバー用途には不向きです。

そのため、本記事では以下のような軽量デスクトップ環境(XfceやMATE)を使用することを前提とします:

  • Xfce:軽量で安定。初心者にも扱いやすい。
  • MATE:昔ながらのUIを持ち、動作も軽快。

この選定は後述の章で詳しく扱います。

3. デスクトップ環境のインストール

なぜデスクトップ環境が必要なのか?

VNCを利用してUbuntuにリモート接続する際、デスクトップ環境がインストールされていなければ画面は表示されません。VNCはGUI(グラフィカル・ユーザー・インターフェース)を遠隔操作するための仕組みであるため、UbuntuサーバーのようなCLI(コマンドラインインターフェース)のみの環境では、VNCの恩恵を受けることができないのです。

軽量デスクトップ環境の選定

VNCでの使用に適したデスクトップ環境は、軽量かつ安定したものが理想です。以下に代表的な2つの選択肢を紹介します。

1. Xfce(エックスエフシーイー)

Xfceは非常に軽量で、古いPCやVPSでも快適に動作するのが特徴です。必要最低限の機能を持ちつつ、デザインもシンプルで使いやすいため、VNC環境との相性も抜群です。

2. MATE(マテ)

MATEはGNOME 2をベースにしたクラシックなデスクトップ環境です。Xfceよりも少しリッチなUIですが、それでも比較的軽量で、安定性にも定評があります。

Xfceのインストール手順(推奨)

以下では、Xfceのインストール手順を紹介します。

sudo apt update
sudo apt install -y xfce4 xfce4-goodies

xfce4-goodies は、Xfceに便利な追加ツール群を含むパッケージで、快適な操作環境を提供します。

インストールには数分かかる場合がありますので、途中でエラーが出ないか確認しつつ進めてください。

MATEのインストール手順(代替案)

もしMATEを使いたい場合は、以下のコマンドでインストールできます:

sudo apt update
sudo apt install -y ubuntu-mate-core

MATEはXfceよりも多少リソースを消費しますが、デスクトップの見た目や操作感にこだわりたい方にはおすすめです。

注意:複数のデスクトップ環境を同時に入れない

XfceとMATEなど、複数のデスクトップ環境を同時にインストールするのは非推奨です。ログイン時にどのセッションを起動するか設定が複雑になり、VNCの設定ミスやトラブルの原因になります。

どちらか一方を選び、導入するようにしましょう。

4. VNCサーバーのインストールと設定

UbuntuでVNCを使うために必要なサーバーソフトとは?

VNC(Virtual Network Computing)は、クライアントとサーバーの2つのソフトウェアで構成されます。Ubuntu側にインストールするのは VNCサーバー です。これにより、リモートからUbuntuのGUIに接続できるようになります。

VNCサーバーには複数の種類がありますが、今回は以下の2つのうち、より人気のあるTigerVNCを使用します。

  • TigerVNC(推奨)
     高速かつ安定しており、XfceやMATEとの相性も良好。
  • TightVNC
     軽量で古いシステムにも対応。ただし、開発は比較的停滞気味。

TigerVNCのインストール手順

以下のコマンドでTigerVNCサーバーをインストールします:

sudo apt update
sudo apt install -y tigervnc-standalone-server tigervnc-common

インストールが完了したら、次は初期設定を行います。

初回起動とパスワードの設定

初めてVNCサーバーを起動する際には、接続用のパスワードを設定する必要があります。

vncserver

実行すると以下のようなプロンプトが表示されます:

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)?

ここで「view-only password」は 閲覧専用モードのパスワードです。通常は「n」で問題ありません。

VNCの設定ファイルの編集(xstartup)

VNCセッションが開始されたら、ユーザーのホームディレクトリ以下に ~/.vnc/xstartup というファイルが生成されます。このファイルは、VNCセッション起動時にどのデスクトップ環境を立ち上げるかを指定するスクリプトファイルです。

Xfceの場合の設定

#!/bin/sh
xrdb $HOME/.Xresources
startxfce4 &

MATEの場合の設定

#!/bin/sh
xrdb $HOME/.Xresources
mate-session &

編集後は、このスクリプトに実行権限を付与する必要があります。

chmod +x ~/.vnc/xstartup

VNCセッションの開始と確認

準備が整ったら、以下のコマンドでVNCセッションを起動します:

vncserver :1

:1は仮想ディスプレイ番号を意味します。初回であれば通常は:1となります。

VNC接続時にはこの番号に対応するポート(例:5901)が使用されます(5900 + 番号 = ポート番号)。

セッションの停止

セッションを終了する場合は以下のコマンドを使用します:

vncserver -kill :1

5. VNCサーバーの自動起動設定

なぜVNCサーバーを自動起動にすべきなのか?

VNCサーバーは、通常ユーザーごとに起動・停止を手動で行います。しかし、毎回手動で vncserver コマンドを実行するのは手間がかかりますし、サーバーが再起動された場合にVNCセッションが起動しないという問題が発生します。

そこで、Systemdを使ってVNCサーバーをサービスとして登録し、自動起動する設定を行うのが一般的です。これにより、常に安定したVNC接続環境を維持できます。

Systemdサービスファイルの作成

まず、ユーザーごとに専用のSystemdサービスファイルを作成します。ここでは例として、VNCセッション番号:1で設定します。

sudo nano /etc/systemd/system/vncserver@:<ディスプレイ番号>.service

例:vncserver@:1.service とする場合は以下のようにします。

sudo nano /etc/systemd/system/vncserver@\:1.service

以下の内容をコピーして貼り付けてください(ユーザー名は自身のものに置き換えてください)。

[Unit]
Description=Start TigerVNC server at startup
After=network.target

[Service]
Type=forking
User=yourusername
PAMName=login
PIDFile=/home/yourusername/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -geometry 1280x800 -depth 24
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

yourusername は実際のユーザー名に置き換えてください。
geometry は画面解像度です。必要に応じて変更できます。

サービスの有効化と起動

サービスファイルを保存したら、以下のコマンドでリロードと有効化、起動を行います。

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable vncserver@:1.service
sudo systemctl start vncserver@:1.service

動作確認

ステータスを確認することで、サービスが正しく動作しているか確認できます。

sudo systemctl status vncserver@:1.service

Active: active (running) と表示されていれば成功です。

注意点:ユーザー単位のサービスであること

この方法では、指定したユーザー1名のVNCセッションのみが対象となります。他のユーザーがVNCを使いたい場合は、それぞれに対応したSystemdファイルを作成する必要があります。

6. クライアントからの接続方法

VNCクライアントとは?

Ubuntu側にVNCサーバーを構築しただけでは、まだリモート操作はできません。クライアント側(自分が操作するパソコン)には、VNCビューアー(VNCクライアント)と呼ばれるソフトウェアをインストールし、そこからUbuntuに接続する必要があります。

推奨されるVNCクライアント

以下のVNCクライアントは、操作性や互換性の面で評価が高く、Ubuntuとの接続にもよく使われています。

クライアント名対応OS特徴
RealVNC ViewerWindows / Mac / Linux / iOS / Androidシンプルで安定性が高く、企業利用にも強い
TigerVNC ViewerWindows / Mac / Linuxオープンソースで自由に使える
UltraVNCWindows高機能だがやや上級者向け
RemminaLinux専用多プロトコル対応のGUIクライアント

特にRealVNC ViewerまたはTigerVNC Viewerを使用するのが無難です。どちらも無料で使えます。

クライアントから接続する方法(例:RealVNC Viewer)

以下は、RealVNC Viewerを使った接続手順です。TigerVNC Viewerでも基本は同様です。

1. RealVNC Viewerのインストール

公式サイト(https://www.realvnc.com/)からOSに合ったバージョンをダウンロードし、インストールします。

2. VNC接続先の入力

アプリを起動したら、接続先として以下のように入力します:

<サーバーのIPアドレス>:5901

または、

<サーバーのIPアドレス>:1

どちらも同じ意味です(5900 + 仮想ディスプレイ番号 = ポート番号)。

3. パスワードの入力

最初に設定したVNCパスワードを求められるので入力してください。
問題がなければ、Ubuntuのデスクトップ画面が表示されます。

トラブルシューティング:接続できない場合

VNC接続に失敗する原因はいくつか考えられます。

● ポートが開放されていない

ファイアウォールやクラウドのセキュリティグループでポート5901がブロックされていないか確認してください。

● SSHトンネル経由で接続しているか?

セキュリティ対策として、次章で紹介するSSHトンネル接続を行っていない場合、VNCポートが外部に公開されておらず接続できないことがあります。

Macから接続する場合

Macの場合もRealVNCやTigerVNCなどのビューアーを利用可能です。インストール後はWindowsと同様にIPアドレスとポートを指定して接続してください。

スマートフォンからの利用も可能

iOSやAndroidでもVNCクライアントアプリが提供されています。タブレットでUbuntuサーバーにアクセスしたい場合などにも便利です。ただし、操作性はPCよりも劣るため、緊急時の補助用と考えるのが現実的です。

7. 日本語入力の設定

VNC環境で日本語入力が必要な理由

UbuntuをVNCでリモート操作できるようになったとしても、そのままでは日本語の入力ができない状態であることが多く、ブログの執筆やファイル名の変更、チャットツールの使用などに支障が出ます。

特にUbuntuは英語環境でインストールされることも多く、日本語ロケールや日本語入力メソッド(IME)がインストールされていない場合があります。この章では、VNC上でも日本語が快適に使えるようにするための設定を解説します。

日本語ロケールの導入

まずは、日本語の表示と文字入力のために日本語ロケールを有効化します。

sudo apt update
sudo apt install -y language-pack-ja

インストール後、ロケールの設定を変更します:

sudo update-locale LANG=ja_JP.UTF-8

その後、再ログインまたは再起動を行うと、GUIの表示言語が日本語に切り替わります(※VNCで表示が崩れる場合は英語のままでも構いません)。

日本語入力メソッドの選定:fcitx vs ibus

Ubuntuでの日本語入力には以下の2つのメソッドが代表的です:

入力メソッド特徴
fcitx-mozc軽量で設定が簡単。VNCでも動作が安定している。
ibus-mozcデフォルトのGNOME環境に強いが、VNCでは不安定な場合がある。

VNC環境では fcitx-mozc の方がトラブルが少なくおすすめです。

fcitx-mozcのインストールと設定

sudo apt install -y fcitx-mozc

次に、入力メソッドが正しく起動するように環境変数を設定します。

~/.xprofile または ~/.profile に以下を追記:

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

その後、fcitxを起動するコマンドを追加:

fcitx &

この記述は ~/.vnc/xstartup ファイルの中にも含めておくと便利です。

例(xstartupファイルの一部):

#!/bin/sh
xrdb $HOME/.Xresources
fcitx &
startxfce4 &

日本語入力の確認

VNCでUbuntuにログイン後、fcitxの設定ツール(fcitx-config-gtk3 など)で「Mozc」が有効になっているか確認してください。

半角/全角キーCtrl + SpaceでIMEのON/OFFを切り替えることができます。

よくあるトラブルとその対処法

症状原因と対処
IMEが起動しないfcitxの起動忘れ、または環境変数の記述ミス
入力できても漢字変換ができないMozcが設定されていない、fcitxの設定が初期状態
起動時に毎回手動でfcitxを起動する必要がある.xstartupfcitx & が書かれていない可能性

これで、VNCセッション上でも日本語入力がスムーズに行えるようになります。次の章では、VNCのセキュリティ強化に欠かせない「SSHトンネル」の設定方法について解説します。

8. セキュリティ強化のためのSSHトンネル設定

VNC接続は暗号化されていない

VNCは非常に便利なリモートデスクトップ手段ですが、標準では通信が暗号化されていないという重大な弱点があります。これにより、悪意ある第三者が通信内容(パスワードや画面情報)を傍受するリスクが存在します。

そのため、インターネット経由でVNCに接続する場合は、SSHトンネルを経由させることで通信を暗号化し、安全性を確保するのが推奨されています。

SSHトンネルとは?

SSHトンネルは、SSH接続を利用して特定のポートを安全に転送する仕組みです。VNCサーバーとクライアントの間に「暗号化された通路」を作ることで、VNCの脆弱性を補完することができます。

SSHトンネルの設定方法(ローカルポートフォワーディング)

以下では、クライアント側がWindowsである場合を例に、SSHトンネルを作成する方法を解説します。

Windows + PuTTYを使ったSSHトンネル設定

1. PuTTYをインストール

PuTTY公式サイト(https://www.putty.org/)からPuTTYをダウンロードしてインストールします。

2. 接続先情報を入力

「Session」タブで、VNCサーバーのIPアドレスと22番ポート(SSH)を指定。

3. トンネルの設定

左のメニューから「Connection」→「SSH」→「Tunnels」を選択。

  • Source port:5901
  • Destination:localhost:5901
  • 「Local」を選択し、「Add」をクリック

4. SSH接続を開始

「Open」をクリックしてSSH接続を開始。これでローカルの5901ポートが、VNCサーバー上の5901ポートに安全に接続されるようになります。

macOS / Linux でのSSHトンネル設定

ターミナルから以下のようにコマンドを入力します:

ssh -L 5901:localhost:5901 ユーザー名@サーバーIP

例:

ssh -L 5901:localhost:5901 naoya@192.168.1.100

成功すれば、そのままVNCクライアントを開き、以下のように入力して接続します:

localhost:5901

接続時の注意点

  • ファイアウォールの設定:SSH(22番ポート)が開いている必要があります。
  • VNCビューア側の入力:IPアドレスではなく localhost:5901 を使うことを忘れずに。

SSHトンネルのメリットまとめ

項目内容
通信の暗号化安全なSSH経由でVNC通信を保護
ファイアウォール簡略化VNCのポート開放が不要で外部から見えなくなる
接続ログの確認SSHのログが残るため、不正アクセスの監視が可能

SSHトンネルを活用することで、インターネット越しでも安全にVNC接続が可能になります。特に外部公開サーバーを運用している方には必須の設定と言えるでしょう。

9. よくあるトラブルと対処法

トラブル1:接続後に画面が真っ黒または灰色になる

原因:

  • ~/.vnc/xstartup ファイルの記述に誤りがある
  • デスクトップ環境のセッションが正常に起動していない

対処法:

  1. ~/.vnc/xstartup の内容を再確認し、以下のように設定されているかチェックします(Xfceの場合):
#!/bin/sh
xrdb $HOME/.Xresources
startxfce4 &
  1. ファイルに実行権限を付与:
chmod +x ~/.vnc/xstartup
  1. VNCセッションを再起動:
vncserver -kill :1
vncserver :1

トラブル2:日本語が入力できない、変換候補が出ない

原因:

  • fcitxやMozcが起動していない
  • 必要な環境変数が正しく設定されていない

対処法:

  1. .xprofile または .xsession に以下を記述したか確認:
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
  1. ~/.vnc/xstartupfcitx & があるか確認:
fcitx &
  1. VNCセッションを再起動してから、fcitx設定ツールで「Mozc」が有効になっているかを確認してください。

トラブル3:VNC接続が不安定、遅延や切断が多い

原因:

  • ネットワーク帯域の不足
  • 解像度やカラー深度の設定が高すぎる

対処法:

  1. 解像度や色深度を下げてVNCを起動してみる:
vncserver :1 -geometry 1024x768 -depth 16
  1. SSHトンネルを使って安定性とセキュリティを向上させる(第8章参照)
  2. クライアントソフト側でも、デフォルトで最適化モードに切り替える設定が可能な場合は利用する

トラブル4:VNC接続はできるがログイン画面が表示されない

原因:

  • GUIセッションが正しく起動していない
  • VNCがログインマネージャーを経由していないため

対処法:

VNCはXサーバーと独立して動作するため、Ubuntuの通常のログイン画面(GDMなど)は表示されません。これは仕様です。表示される画面は、.vnc/xstartup で起動したセッションです。

もしマルチユーザーで使いたい、またはログイン画面からの操作を想定している場合は、VNCよりもRDP(xrdp)を検討する方が適しています。

トラブル5:VNCセッションを起動できない/アクセス拒否エラー

原因:

  • サービスファイルの設定ミス
  • PIDファイルが残っていてセッションが競合している

対処法:

  1. VNCセッションを完全に停止:
vncserver -kill :1
  1. .vnc フォルダ内の不要な .pid.log ファイルを削除:
rm ~/.vnc/*.pid
rm ~/.vnc/*.log
  1. 再度セッションを起動:
vncserver :1

その他のヒント

  • ログの確認は ~/.vnc/*.log を見るとヒントになることがあります。
  • 複数ユーザーで使う場合は、それぞれ別のディスプレイ番号(例::2, :3)を使ってVNCサーバーを起動してください。

10. まとめ

今回の構築手順のおさらい

  • 前提条件と準備
    VNCの動作に必要なUbuntuバージョン、デスクトップ環境、SSHアクセスなどを整える
  • デスクトップ環境の導入
    軽量かつ安定した Xfce や MATE を導入し、VNCに適したGUIを準備
  • TigerVNCの設定
    安定性の高いTigerVNCを使用し、セッション番号と解像度などの設定を実施
  • 自動起動の構成
    Systemdでサービス化することで、サーバー再起動時にもVNCセッションが復旧
  • クライアント接続方法
    RealVNC Viewer や TigerVNC Viewer を用いて接続し、適切なポートを指定
  • 日本語入力の設定
    fcitx-mozc を導入し、.xstartup.xprofile に環境変数を追記して完全対応
  • SSHトンネルの活用
    通信の暗号化により、VNC特有のセキュリティ上のリスクを回避
  • トラブル対応
    よくある症状別に、実践的な対処法を紹介

今後の運用に向けて

VNC環境を一度構築すれば、ローカルと変わらない感覚でUbuntuを操作できるようになります。特に、以下のようなニーズに適しています:

  • VPSやクラウド上のUbuntuをGUIで操作したい
  • チームメンバーと共用環境を作りたい(ディスプレイ番号を分ければ可能)
  • コマンドラインが苦手な初心者がGUI経由で学びたい

一方で、VNCは軽量である反面、マルチメディア用途や高いセキュリティを要求される場面では注意が必要です。より高機能なリモート接続が必要な場合は、xrdpやNoMachineなどの代替も検討してみてください。

最後に

UbuntuにおけるVNCの導入は、一見複雑に見えても、手順を一つひとつ丁寧に進めれば十分に実現可能です。本記事があなたのUbuntuリモート操作環境の構築に役立つことを願っています。

もし構築に関して不明点があれば、コメント欄やSNSなどでお気軽にご相談ください。これからのUbuntuライフがより便利で快適なものになりますように。

侍エンジニア塾