前書き
VNC、または「仮想ネットワークコンピューティング」は、キーボードとマウスを使用してリモートサーバー上のグラフィカルデスクトップ環境と対話できるようにする接続システムです。 コマンドラインにまだ慣れていないユーザーにとって、リモートサーバー上のファイル、ソフトウェア、および設定の管理が容易になります。
このガイドでは、Ubuntu 16.04サーバーでVNCをセットアップし、SSHトンネルを介して安全に接続します。 使用するVNCサーバーは、高速で軽量のリモートコントロールパッケージであるTightVNCです。 この選択により、低速のインターネット接続でもVNC接続がスムーズで安定します。
前提条件
このチュートリアルを完了するには、次のものが必要です。
-
Ubuntu 16.04 initial server setup tutorialを介してセットアップされたUbuntu 16.04ドロップレット。これには、sudo非rootユーザーが含まれます。 このチュートリアルは、任意のサイズのドロップレットを使用して完了することができますが、小さなドロップレット上に構築されたVNCは、大きなドロップレットよりも機能に制限がある場合があります。
-
SSHトンネルを介したVNC接続をサポートするVNCクライアントがインストールされたローカルコンピューター。 Windowsを使用している場合は、TightVNC、RealVNC、またはUltraVNCを使用できます。 Mac OS Xユーザーは、組み込みの画面共有プログラムを使用するか、RealVNCなどのクロスプラットフォームアプリを使用できます。 Linuxユーザーは、
vinagre
、krdc
、RealVNC、TightVNCなどの多くのオプションから選択できます。
[[step-1 -—- installing-the-desktop-environment-and-vnc-server]] ==ステップ1—デスクトップ環境とVNCサーバーのインストール
デフォルトでは、Ubuntu 16.04 Dropletにはグラフィカルデスクトップ環境やVNCサーバーがインストールされていないため、それらをインストールすることから始めます。 具体的には、最新のXfceデスクトップ環境用のパッケージと、公式のUbuntuリポジトリで利用可能なTightVNCパッケージをインストールします。
サーバーに、XfceおよびTightVNCパッケージをインストールします。
sudo apt-get update
sudo apt install xfce4 xfce4-goodies tightvncserver
インストール後にVNCサーバーの初期構成を完了するには、vncserver
コマンドを使用して安全なパスワードを設定します。
vncserver
パスワードと表示専用パスワードの入力と確認を求められます。 表示専用パスワードでログインしたユーザーは、マウスまたはキーボードでVNCインスタンスを制御できません。 これは、VNCサーバーを使用して他の人に何かをデモンストレーションしたい場合に便利なオプションですが、必須ではありません。
vncserver
を実行すると、サーバーが使用するデフォルトの構成ファイルと接続情報が作成され、VNCのインストールが完了します。 これらのパッケージをインストールすると、VNCサーバーを構成する準備が整いました。
[[step-2 -—- configuring-the-vnc-server]] ==ステップ2—VNCサーバーの構成
まず、VNCサーバーの起動時に実行するコマンドを指定する必要があります。 これらのコマンドは、ホームディレクトリの下の.vnc
フォルダにあるxstartup
という設定ファイルにあります。 起動スクリプトは、前の手順でvncserver
を実行したときに作成されましたが、Xfceデスクトップのコマンドの一部を変更する必要があります。
VNCが最初にセットアップされると、ポート5901でデフォルトのサーバーインスタンスが起動します。 このポートはディスプレイポートと呼ばれ、VNCでは:1
と呼ばれます。 VNCは、:2
、:3
などの他のディスプレイポートで複数のインスタンスを起動できます。 VNCサーバーを使用する場合、:X
は5900+X
を参照する表示ポートであることに注意してください。
VNCサーバーの構成方法を変更するため、最初にポート5901で実行されているVNCサーバーインスタンスを停止する必要があります。
vncserver -kill :1
出力は、PIDが異なる次のようになります。
OutputKilling Xtightvnc process ID 17648
新しいxstartup
ファイルの構成を開始する前に、元のファイルをバックアップしましょう。
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
次に、nano
またはお気に入りのテキストエディタを使用して、新しいxstartup
ファイルを作成します。
nano ~/.vnc/xstartup
これらのコマンドをファイルに貼り付けて、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_server_name.com:1
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/liniverse.com:1.log
[[step-3 -—- testing-the-vnc-desktop]] ==ステップ3—VNCデスクトップのテスト
このステップでは、VNCサーバーの接続をテストします。
まず、VNCのlocalhost
接続に安全に転送するSSH接続をローカルコンピューターに作成する必要があります。 これを行うには、LinuxまたはOS Xのターミナルから次のコマンドを使用します。 user
とserver_ip_address
を、サーバーのsudo非rootユーザー名とIPアドレスに置き換えることを忘れないでください。
ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
PuTTYなどのグラフィカルSSHクライアントを使用している場合は、接続IPとしてserver_ip_address
を使用し、プログラムのSSHトンネル設定でlocalhost:5901
を新しい転送ポートとして設定します。
次に、VNCクライアントを使用して、localhost:5901
でVNCサーバーへの接続を試みることができます。 認証を求められます。 使用する正しいパスワードは、ステップ1で設定したものです。
接続すると、デフォルトのXfceデスクトップが表示されます。 これは次のようになります。
以下に示すように、ファイルマネージャーまたはコマンドラインからホームディレクトリ内のファイルにアクセスできます。
[[step-4 -—- creating-a-vnc-service-file]] ==ステップ4—VNCサービスファイルの作成
次に、VNCサーバーをsystemdサービスとして設定します。 これにより、他のsystemdサービスと同様に、必要に応じて開始、停止、および再起動できます。
まず、お気に入りのテキストエディタを使用して/etc/systemd/system/[email protected]
という新しいユニットファイルを作成します。
sudo nano /etc/systemd/system/[email protected]
以下をコピーして貼り付けます。 必ずUserの値とPIDFILEの値のユーザー名をユーザー名と一致するように変更してください。
/etc/systemd/system/[email protected] [Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=sammy
PAMName=login
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
ファイルを保存して閉じます。
次に、システムに新しいユニットファイルを認識させます。
sudo systemctl daemon-reload
ユニットファイルを有効にします。
sudo systemctl enable [email protected]
@
記号に続く1
は、サービスが表示される表示番号を示します。この場合、上記で説明したデフォルトの:1
です。
現在のインスタンスを停止します。まだ実行中の場合はVNCサーバー。
vncserver -kill :1
次に、他のsystemdサービスを開始するのと同じように開始します。
sudo systemctl start vncserver@1
次のコマンドで開始したことを確認できます。
sudo systemctl status vncserver@1
正常に起動した場合、出力は次のようになります。
出力
[email protected] - TightVNC server on Ubuntu 16.04
Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-04-25 03:21:34 EDT; 6s ago
Process: 2924 ExecStop=/usr/bin/vncserver -kill :%i (code=exited, status=0/SUCCESS)
...
systemd[1]: Starting TightVNC server on Ubuntu 16.04...
systemd[2938]: pam_unix(login:session): session opened for user finid by (uid=0)
systemd[2949]: pam_unix(login:session): session opened for user finid by (uid=0)
systemd[1]: Started TightVNC server on Ubuntu 16.04.
結論
これで、Ubuntu 16.04サーバーで安全なVNCサーバーが稼働しているはずです。 これで、使いやすく使い慣れたグラフィカルインターフェイスを使用して、ファイル、ソフトウェア、設定を管理できるようになります。