序章

VNC(Virtual Network Computing)は、ユーザーがリモートコンピューターのグラフィカルデスクトップに接続して対話できるようにするシステムです。 画面の更新、キーボードとマウスのイベントをネットワーク経由で送信できます。

VNCは、サーバーにグラフィカルデスクトップ環境が必要な場合に役立ちます。

XFCEは軽量のデスクトップ環境です。 システムリソースの要件が低く、多くのVNCユーザーがこれに精通しているため、このチュートリアルではXFCEを使用します。 ただし、代わりにGnomeやKDEなどのお気に入りのデスクトップ環境を使用することもできます。

このチュートリアルでは、Debian 8サーバーをセットアップし、XFCEデスクトップ環境をインストールして、VNC経由で接続します。 さらに、VNCサーバーの起動スクリプトを作成し、SSH経由で保護します。

前提条件

以下の前提条件を満たしてください。

  • ルートアクセス権を持つDebian8(または8.1)ドロップレット。 VNCとXFCEを実行するには512MBのRAMで十分ですが、グラフィカルインターフェイスで何をする予定かによっては、より大きなドロップレットが必要になる場合があります。
  • サーバーに接続するためのコンピューター上のVNCビューアー(クライアント)。 このチュートリアルでは、WindowsでUltraVNCを使用しますが、他のVNCクライアントを使用することもできます。 UltraVNCはこちらからダウンロードできます。 OS Xには、画面共有と呼ばれるVNCクライアントが組み込まれています。
  • SSH経由で安全な接続を確立するためのSSHクライアント。 Windows用のPuTTYを使用します。 PuTTYはこちらからダウンロードできます。 OS Xでは、組み込みのターミナルアプリケーションを使用するだけです

ステップ1—VNCとXFCEをインストールする

このステップでは、追加のソフトウェアとアイコンパックを使用して、VNCサーバーとXFCEデスクトップ環境をインストールします。

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

  1. apt-get update

パッケージ自体をアップグレードします。

  1. apt-get -y upgrade

次に、tightvncserverとXFCE4をインストールし、いくつかの便利なアドオンとアイコンテーマを追加します。

  1. apt-get install xfce4 xfce4-goodies gnome-icon-theme tightvncserver

デフォルトでは、ブラウザはインストールされていません。 VNC接続からWebにアクセスする場合は、iceweasel(Debian用のMozilla Firefoxのブランド変更バージョン)をインストールできます。

  1. apt-get install iceweasel

ステップ2—VNCユーザーを作成する

物事を安全かつ整頓するために、VNC接続用に別のユーザーを作成します。 VNCサーバーにrootユーザーを直接使用するのではなく、sudoを使用することを強くお勧めします。

次のコマンドを使用して、vncという名前のユーザーをDebianドロップレットに追加できます。

  1. adduser vnc

新しいユーザーにパスワードを与えます。 ENTERを押すだけで、他のすべての質問をスキップできます。

次のコマンドを実行して、sudoをインストールします。

  1. apt-get install sudo

新しいvncユーザーをsudoグループに追加します。これにより、そのユーザーにrootコマンドを実行する権限が与えられます。

  1. gpasswd -a vnc sudo

vncユーザーに切り替えましょう。

  1. su - vnc

ステップ3—VNCサーバーの起動と停止

新しく作成したvncユーザーとして、VNCサーバーを起動して接続をテストできます。

VNCサーバーを起動します。

  1. vncserver

サーバーを初めて実行するため、クライアントが接続に使用するパスワードを設定するように求められます。 後で使用するために、このパスワードを覚えておいてください。 表示専用のパスワードを設定することもできます。これにより、ユーザーは画面を表示できますが、画面を操作することはできません。 パスワードは6〜8文字である必要があります。

サーバーの起動時に表示番号が通知されます。

出力
xauth:  file /home/vnc/.Xauthority does not exist

New 'X' desktop is vnc:1

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

デフォルトでは、VNC接続は、最初の表示の5901から始まるポートで提供されます。 2番目のディスプレイはポート5902などで提供されます。

今はサーバーを停止しないでください。ただし、参照用にstopコマンドが含まれています。

このコマンドを使用して、Display 1(およびポート5901)でVNCサーバーを停止します。

  1. vncserver -kill :1

:1は、強制終了する表示番号です。

再度接続する場合は、VNCサーバーを手動で起動できます。 後のステップでVNCサーバー用のサービスを作成します。

ステップ4—VNCクライアントから接続する

これで、VNCサーバーに接続できます。 ローカルのVNCクライアントを開きます。これは、オペレーティングシステムによって異なります。

Windowsでは、UltraVNCここを使用できます。

OS Xでは、組み込みの画面共有アプリを使用するか、Safariからこのアプリにアクセスできます。 Safariでは、 vnc:// your_server_ip:5901と入力できます。

VNCサーバーアドレスには、 your_server_ip:5901 と入力し、VNC接続に設定したパスワードを使用します。

XFCEウェルカム画面でUsedefault config ボタンを選択すると、簡単に開始できます。

Xubuntu Welcome Screen

これで、リモートデスクトップを使用できます。

ステップ5—VNCサーバーを自動的に起動するsystemdサービスを作成する

このセクションでは、VNCサーバーをsystemdに追加します。 サービスを使用すると、VNCサーバーを起動および停止したり、Dropletの再起動時にサーバーを自動的に起動したりするのに役立ちます。

まず、現在のインスタンスを強制終了しましょう。

  1. vncserver -kill :1

VNCサーバーを簡単に管理および構成するための簡単なスクリプトを作成します。

vnc または他のsudoユーザーとして、お気に入りのテキストエディターを使用してスクリプトファイルを作成します。

  1. sudo nano /usr/local/bin/myvncserver

これらのコンテンツを正確に追加してください。 このスクリプトは、VNCに起動用のいくつかのパラメーターを提供します。

/ usr / local / bin / myvncserver
#!/bin/bash
PATH="$PATH:/usr/bin/"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"

case "$1" in
start)
/usr/bin/vncserver ${OPTIONS}
;;

stop)
/usr/bin/vncserver -kill :${DISPLAY}
;;

restart)
$0 stop
$0 start
;;
esac
exit 0

スクリプトを変更して、VNC接続の色深度または解像度を変更できます。

nanoを使用している場合は、CTRL+Oを使用してファイルを保存し、CTRL+Xを使用して終了できます。

ファイルを実行可能にします。

  1. sudo chmod +x /usr/local/bin/myvncserver

私たちのスクリプトは、設定を変更し、VNCサーバーを簡単に開始/停止するのに役立ちます。

必要に応じて、スクリプトを手動で呼び出して、目的の構成でポート5901でVNCサーバーを開始/停止できます。

  1. sudo /usr/local/bin/myvncserver start
  2. sudo /usr/local/bin/myvncserver stop
  3. sudo /usr/local/bin/myvncserver restart

これで、サービスのユニットファイルを作成できます。 ユニットファイルは、サービスを記述し、サービスを開始/停止または再起動するために何をすべきかをコンピューターに指示するために使用されます。

  1. sudo nano /lib/systemd/system/myvncserver.service

これらのコマンドをサービスファイルにコピーします。 私たちのサービスは、ユーザーvncで上記の起動スクリプトを呼び出すだけです。

/lib/systemd/system/myvncserver.service
[Unit]
Description=Manage VNC Server on this droplet

[Service]
Type=forking
ExecStart=/usr/local/bin/myvncserver start
ExecStop=/usr/local/bin/myvncserver stop
ExecReload=/usr/local/bin/myvncserver restart
User=vnc

[Install]
WantedBy=multi-user.target

これで、systemctlをリロードして、サービスを有効にできます。

  1. sudo systemctl daemon-reload
  2. sudo systemctl enable myvncserver.service

これで、新しいサービスが有効になりました。 systemctlコマンドを使用してサービスを開始、停止、または再起動するには、次のコマンドを使用します。

  1. sudo systemctl start myvncserver.service
  2. sudo systemctl stop myvncserver.service
  3. sudo systemctl restart myvncserver.service

これで、DropletでVNCサーバーをサービスとして実行できます。

ステップ6—SSHトンネリングでVNCサーバーを保護する

デフォルトでは、VNC接続は暗号化を使用しないため、SSHトンネルを使用してセッションを保護することをお勧めします。

そのためには、VNCサーバーをlocalhostでのみ提供します。 これを行うには、前の手順で作成した起動スクリプトのOPTIONS行に-localhostを追加します。

まず、VNCサーバーを停止します。

  1. sudo systemctl stop myvncserver.service

構成スクリプトを編集します。

  1. sudo nano /usr/local/bin/myvncserver

この行を変更します。

/ usr / local / bin / myvncserver
. . .

OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"

. . .

次のように置き換えます。

/ usr / local / bin / myvncserver
. . .

OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"

. . .

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

  1. sudo systemctl start myvncserver.service

これで、リモートコンピューターからVNCサーバーに直接接続できなくなります。

ウィンドウズ:

PuTTYを使用してSSHトンネルを作成し、作成したトンネルを介して接続します。

PuTTYを開きます。

左側のメニューから、接続->SSH->トンネルセクションに移動します。

Add New Forwarded Port セクションで、 Source portとして5901を入力し、Destinationとしてlocalhost:5901を入力します。

追加ボタンをクリックします。

PuTTY SSH Tunnel Configuration

これで、左側のメニューのセッションセクションに移動できます。

ドロップレットのIPアドレスをホスト名(またはIPアドレス)フィールドに入力します。

開くボタンをクリックして接続します。 これらのオプションは、後で使用するために保存することもできます。

PuTTY SSH Connection

vncユーザーでログインします。

VNC接続を行う間、PuTTYウィンドウを開いたままにします。

これで、VNCビューアを通常どおりに使用できます。 アドレスとしてlocalhost:: 5901 と入力するだけで、SSH接続をバックグラウンドで維持できます。

UltraVNC Viewer: localhost::5901

OS X:

SSHトンネルを確立するには、ターミナルで次の行を使用します。

ssh vnc@your_server_ip -L 5901:localhost:5901

SSHのvncユーザーに対して通常どおり認証します。 次に、画面共有アプリで、 localhost:5901を使用します。

結論

これで、Debian8サーバーで共有リモートデスクトップを使用できます。

これを使用してサーバーを構成したり、画面を他のユーザーと共有したりします。