Debian8でVNCサーバーをセットアップする方法
序章
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デスクトップ環境をインストールします。
サーバーのパッケージリストを更新します。
- apt-get update
パッケージ自体をアップグレードします。
- apt-get -y upgrade
次に、tightvncserver
とXFCE4をインストールし、いくつかの便利なアドオンとアイコンテーマを追加します。
- apt-get install xfce4 xfce4-goodies gnome-icon-theme tightvncserver
デフォルトでは、ブラウザはインストールされていません。 VNC接続からWebにアクセスする場合は、iceweasel
(Debian用のMozilla Firefoxのブランド変更バージョン)をインストールできます。
- apt-get install iceweasel
ステップ2—VNCユーザーを作成する
物事を安全かつ整頓するために、VNC接続用に別のユーザーを作成します。 VNCサーバーにrootユーザーを直接使用するのではなく、sudo
を使用することを強くお勧めします。
次のコマンドを使用して、vncという名前のユーザーをDebianドロップレットに追加できます。
- adduser vnc
新しいユーザーにパスワードを与えます。 ENTER
を押すだけで、他のすべての質問をスキップできます。
次のコマンドを実行して、sudo
をインストールします。
- apt-get install sudo
新しいvncユーザーをsudoグループに追加します。これにより、そのユーザーにrootコマンドを実行する権限が与えられます。
- gpasswd -a vnc sudo
vncユーザーに切り替えましょう。
- su - vnc
ステップ3—VNCサーバーの起動と停止
新しく作成したvncユーザーとして、VNCサーバーを起動して接続をテストできます。
VNCサーバーを起動します。
- 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サーバーを停止します。
- 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 ボタンを選択すると、簡単に開始できます。
これで、リモートデスクトップを使用できます。
ステップ5—VNCサーバーを自動的に起動するsystemdサービスを作成する
このセクションでは、VNCサーバーをsystemdに追加します。 サービスを使用すると、VNCサーバーを起動および停止したり、Dropletの再起動時にサーバーを自動的に起動したりするのに役立ちます。
まず、現在のインスタンスを強制終了しましょう。
- vncserver -kill :1
VNCサーバーを簡単に管理および構成するための簡単なスクリプトを作成します。
vnc または他のsudoユーザーとして、お気に入りのテキストエディターを使用してスクリプトファイルを作成します。
- sudo nano /usr/local/bin/myvncserver
これらのコンテンツを正確に追加してください。 このスクリプトは、VNCに起動用のいくつかのパラメーターを提供します。
#!/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
を使用して終了できます。
ファイルを実行可能にします。
- sudo chmod +x /usr/local/bin/myvncserver
私たちのスクリプトは、設定を変更し、VNCサーバーを簡単に開始/停止するのに役立ちます。
必要に応じて、スクリプトを手動で呼び出して、目的の構成でポート5901でVNCサーバーを開始/停止できます。
- sudo /usr/local/bin/myvncserver start
- sudo /usr/local/bin/myvncserver stop
- sudo /usr/local/bin/myvncserver restart
これで、サービスのユニットファイルを作成できます。 ユニットファイルは、サービスを記述し、サービスを開始/停止または再起動するために何をすべきかをコンピューターに指示するために使用されます。
- sudo nano /lib/systemd/system/myvncserver.service
これらのコマンドをサービスファイルにコピーします。 私たちのサービスは、ユーザーvncで上記の起動スクリプトを呼び出すだけです。
[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
をリロードして、サービスを有効にできます。
- sudo systemctl daemon-reload
- sudo systemctl enable myvncserver.service
これで、新しいサービスが有効になりました。 systemctl
コマンドを使用してサービスを開始、停止、または再起動するには、次のコマンドを使用します。
- sudo systemctl start myvncserver.service
- sudo systemctl stop myvncserver.service
- sudo systemctl restart myvncserver.service
これで、DropletでVNCサーバーをサービスとして実行できます。
ステップ6—SSHトンネリングでVNCサーバーを保護する
デフォルトでは、VNC接続は暗号化を使用しないため、SSHトンネルを使用してセッションを保護することをお勧めします。
そのためには、VNCサーバーをlocalhostでのみ提供します。 これを行うには、前の手順で作成した起動スクリプトのOPTIONS
行に-localhost
を追加します。
まず、VNCサーバーを停止します。
- sudo systemctl stop myvncserver.service
構成スクリプトを編集します。
- sudo nano /usr/local/bin/myvncserver
この行を変更します。
. . .
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. . .
次のように置き換えます。
. . .
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"
. . .
VNCサーバーを再起動します。
- sudo systemctl start myvncserver.service
これで、リモートコンピューターからVNCサーバーに直接接続できなくなります。
ウィンドウズ:
PuTTYを使用してSSHトンネルを作成し、作成したトンネルを介して接続します。
PuTTYを開きます。
左側のメニューから、接続->SSH->トンネルセクションに移動します。
Add New Forwarded Port セクションで、 Source portとして5901
を入力し、Destinationとしてlocalhost:5901
を入力します。
追加ボタンをクリックします。
これで、左側のメニューのセッションセクションに移動できます。
ドロップレットのIPアドレスをホスト名(またはIPアドレス)フィールドに入力します。
開くボタンをクリックして接続します。 これらのオプションは、後で使用するために保存することもできます。
vncユーザーでログインします。
VNC接続を行う間、PuTTYウィンドウを開いたままにします。
これで、VNCビューアを通常どおりに使用できます。 アドレスとしてlocalhost:: 5901 と入力するだけで、SSH接続をバックグラウンドで維持できます。
OS X:
SSHトンネルを確立するには、ターミナルで次の行を使用します。
ssh vnc@your_server_ip -L 5901:localhost:5901
SSHのvncユーザーに対して通常どおり認証します。 次に、画面共有アプリで、 localhost:5901を使用します。
結論
これで、Debian8サーバーで共有リモートデスクトップを使用できます。
これを使用してサーバーを構成したり、画面を他のユーザーと共有したりします。