Ubuntu 18.04にVNCをインストールおよび構成する方法

前書き

Virtual Network Computing(VNC)は、キーボードとマウスを使用してリモートサーバー上のグラフィカルデスクトップ環境と対話できるようにする接続システムです。 コマンドラインにまだ慣れていないユーザーにとって、リモートサーバー上のファイル、ソフトウェア、および設定の管理が容易になります。

このガイドでは、Ubuntu 18.04サーバーにVNCサーバーをセットアップし、SSHトンネルを介して安全に接続します。 高速で軽量なリモコンパッケージであるTightVNCを使用します。 この選択により、低速のインターネット接続でもVNC接続がスムーズで安定します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • sudo非rootユーザーとファイアウォールを含むthe Ubuntu 18.04 initial server setup guideをフォローしてセットアップされた1つのUbuntu18.04サーバー。

  • SSHトンネルを介したVNC接続をサポートするVNCクライアントがインストールされたローカルコンピューター。

    • Winowsでは、TightVNCRealVNC、またはUltraVNCを使用できます。

    • macOSでは、組み込みのScreen Sharingプログラムを使用するか、RealVNCのようなクロスプラットフォームアプリを使用できます。

    • Linuxでは、vinagrekrdcRealVNC、またはTightVNCを含む多くのオプションから選択できます。

[[step-1 -—- installing-the-desktop-environment-and-vnc-server]] ==ステップ1—デスクトップ環境とVNCサーバーのインストール

デフォルトでは、Ubuntu 18.04サーバーにはグラフィカルデスクトップ環境やVNCサーバーがインストールされていないため、それらをインストールすることから始めます。 具体的には、最新のXfceデスクトップ環境用のパッケージと、公式のUbuntuリポジトリで入手可能なTightVNCパッケージをインストールします。

サーバーで、パッケージのリストを更新します。

sudo apt update

次に、サーバーにXfceデスクトップ環境をインストールします。

sudo apt install xfce4 xfce4-goodies

そのインストールが完了したら、TightVNCサーバーをインストールします。

sudo apt install tightvncserver

インストール後にVNCサーバーの初期構成を完了するには、vncserverコマンドを使用して安全なパスワードを設定し、初期構成ファイルを作成します。

vncserver

マシンにリモートでアクセスするには、パスワードを入力して確認するよう求められます。

OutputYou will require a password to access your desktops.

Password:
Verify:

パスワードは6〜8文字の長さである必要があります。 8文字を超えるパスワードは自動的に切り捨てられます。

パスワードを確認したら、表示専用パスワードを作成するオプションがあります。 表示専用パスワードでログインしたユーザーは、マウスまたはキーボードでVNCインスタンスを制御できません。 これは、VNCサーバーを使用して他の人に何かを見せたい場合に便利なオプションですが、必須ではありません。

次に、プロセスは、サーバーに必要なデフォルトの構成ファイルと接続情報を作成します。

OutputWould you like to enter a view-only password (y/n)? n
xauth:  file /home/sammy/.Xauthority does not exist

New 'X' desktop is your_hostname:1

Creating default startup script /home/sammy/.vnc/xstartup
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log

それでは、VNCサーバーを構成しましょう。

[[step-2 -—- configuring-the-vnc-server]] ==ステップ2—VNCサーバーの構成

VNCサーバーは、起動時に実行するコマンドを知る必要があります。 具体的には、VNCは接続するグラフィカルデスクトップを知る必要があります。

これらのコマンドは、ホームディレクトリの下の.vncフォルダにあるxstartupという設定ファイルにあります。 起動スクリプトは、前の手順でvncserverを実行したときに作成されましたが、Xfceデスクトップを起動するための独自のスクリプトを作成します。

VNCが最初にセットアップされると、ポート5901でデフォルトのサーバーインスタンスが起動します。 このポートはdisplay portと呼ばれ、VNCでは:1と呼ばれます。 VNCは、:2:3などの他のディスプレイポートで複数のインスタンスを起動できます。

VNCサーバーの構成方法を変更するため、最初に次のコマンドを使用して、ポート5901で実行されているVNCサーバーインスタンスを停止します。

vncserver -kill :1

出力は次のようになりますが、別のPIDが表示されます。

OutputKilling Xtightvnc process ID 17648

xstartupファイルを変更する前に、元のファイルをバックアップしてください。

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

次に、新しいxstartupファイルを作成し、テキストエディタで開きます。

nano ~/.vnc/xstartup

このファイルのコマンドは、VNCサーバーを起動または再起動するたびに自動的に実行されます。 デスクトップ環境がまだ起動していない場合は、VNCで起動する必要があります。 これらのコマンドをファイルに追加します。

~/.vnc/xstartup#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

ファイルの最初のコマンドxrdb $HOME/.Xresourcesは、VNCのGUIフレームワークにサーバーユーザーの.Xresourcesファイルを読み取るように指示します。 .Xresourcesは、ユーザーがグラフィカルデスクトップの特定の設定(端末の色、カーソルテーマ、フォントレンダリングなど)を変更できる場所です。 2番目のコマンドは、サーバーにXfceを起動するように指示します。Xfceは、サーバーを快適に管理するために必要なすべてのグラフィカルソフトウェアを見つける場所です。

VNCサーバーがこの新しいスタートアップファイルを適切に使用できるようにするには、実行可能にする必要があります。

sudo chmod +x ~/.vnc/xstartup

次に、VNCサーバーを再起動します。

vncserver

次のような出力が表示されます。

OutputNew 'X' desktop is your_hostname:1

Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log

設定が完了したら、ローカルマシンからサーバーに接続しましょう。

[[step-3 -—- connecting-the-vnc-desktop-securely]] ==ステップ3—VNCデスクトップを安全に接続する

VNC自体は、接続時に安全なプロトコルを使用しません。 SSHトンネルを使用してサーバーに安全に接続し、直接接続ではなくそのトンネルを使用するようにVNCクライアントに指示します。

VNCのlocalhost接続に安全に転送するSSH接続をローカルコンピューターに作成します。 次のコマンドを使用して、LinuxまたはmacOSのターミナル経由でこれを実行できます。

ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

-Lスイッチは、ポートバインディングを指定します。 この場合、リモート接続のポート5901をローカルマシンのポート5901にバインドしています。 -Cスイッチは圧縮を有効にし、-Nスイッチはsshにリモートコマンドを実行したくないことを通知します。 -lスイッチは、リモートログイン名を指定します。

sammyyour_server_ipを、サーバーのsudo非rootユーザー名とIPアドレスに置き換えることを忘れないでください。

PuTTYなどのグラフィカルSSHクライアントを使用している場合は、接続IPとしてyour_server_ipを使用し、プログラムのSSHトンネル設定でlocalhost:5901を新しい転送ポートとして設定します。

トンネルが実行されたら、VNCクライアントを使用してlocalhost:5901に接続します。 手順1で設定したパスワードを使用して認証するように求められます。

接続すると、デフォルトのXfceデスクトップが表示されます。 これは次のようになります。

VNC connection to Ubuntu 18.04 server

以下に示すように、ファイルマネージャーまたはコマンドラインからホームディレクトリ内のファイルにアクセスできます。

Files via VNC connection to Ubuntu 18.04

ターミナルでCTRL+Cを押して、SSHトンネルを停止し、プロンプトに戻ります。 これにより、VNCセッションも切断されます。

次に、VNCサーバーをサービスとして設定します。

[[step-4 -—- running-vnc-as-a-system-service]] ==ステップ4—VNCをシステムサービスとして実行する

次に、VNCサーバーをsystemdサービスとして設定し、他のサービスと同様に必要に応じて開始、停止、再起動できるようにします。 これにより、サーバーの再起動時にVNCが確実に起動します。

まず、お気に入りのテキストエディタを使用して/etc/systemd/system/[email protected]という新しいユニットファイルを作成します。

sudo nano /etc/systemd/system/[email protected]

名前の最後にある@記号を使用すると、サービス構成で使用できる引数を渡すことができます。 これを使用して、サービスを管理するときに使用するVNCディスプレイポートを指定します。

ファイルに次の行を追加します。 必ずUserGroupWorkingDirectoryの値、およびPIDFILEの値のユーザー名をユーザー名と一致するように変更してください。

/etc/systemd/system/[email protected] [Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy

PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

ExecStartPreコマンドは、VNCがすでに実行されている場合、それを停止します。 ExecStartコマンドはVNCを開始し、色深度を1280x800の解像度で24ビットカラーに設定します。 ニーズに合わせてこれらの起動オプションも変更できます。

ファイルを保存して閉じます。

次に、システムに新しいユニットファイルを認識させます。

sudo systemctl daemon-reload

ユニットファイルを有効にします。

sudo systemctl enable [email protected]

@記号に続く1は、サービスが表示される表示番号を示します。この場合は、手順2で説明したデフォルトの:1です。

VNCサーバーの現在のインスタンスがまだ実行中の場合は停止します。

vncserver -kill :1

次に、他のsystemdサービスを開始するのと同じように開始します。

sudo systemctl start [email protected]

次のコマンドで開始したことを確認できます。

sudo systemctl status [email protected]

正常に起動した場合、出力は次のようになります。

Output● [email protected] - Start TightVNC server at startup
   Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
   Active: active (running) since Mon 2018-07-09 18:13:53 UTC; 2min 14s ago
  Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
  Process: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
 Main PID: 22330 (Xtightvnc)

...

マシンを再起動すると、VNCサーバーが利用可能になります。

SSHトンネルを再度開始します。

ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

次に、VNCクライアントソフトウェアを使用してlocalhost:5901に新しい接続を確立し、マシンに接続します。

結論

これで、Ubuntu 18.04サーバーで安全なVNCサーバーが稼働します。 これで、使いやすい使い慣れたグラフィカルインターフェイスを使用してファイル、ソフトウェア、設定を管理できるようになり、ウェブブラウザなどのグラフィカルソフトウェアをリモートで実行できるようになります。

Related