Debian 9でVNCをインストールおよび構成する方法

前書き

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

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

前提条件

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

  • Debian 9初期サーバーセットアップガイドに従ってセットアップされた1台のDebian 9サーバー。 `+ sudo +`アクセスとファイアウォール。

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

  • Windowsでは、https://www.tightvnc.com/ [TightVNC]、https://www.realvnc.com/ [RealVNC]、またはhttps://www.uvnc.com/[UltraVNC]を使用できます。

  • macOSでは、組み込みのhttps://support.apple.com/guide/mac-help/screen-sharing-overview-mh14066/mac [画面共有]プログラムを使用するか、次のようなクロスプラットフォームアプリを使用できます。 RealVNC

  • Linuxでは、 + vinagre ++ krdc +、https://www.realvnc.com/ [RealVNC]、またはhttps://www.tightvnc.com/[TightVNC]を含む多くのオプションから選択できます。

ステップ1-デスクトップ環境とVNCサーバーのインストール

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

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

sudo apt update

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

sudo apt install xfce4 xfce4-goodies

インストール中に、可能なオプションのリストからキーボードレイアウトを選択するよう求められます。 お使いの言語に適したものを選択して、「+ Enter」を押します。 インストールが続行されます。

そのインストールが完了したら、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)?
xauth:  file /home//.Xauthority does not exist

New 'X' desktop is :1

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

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

ステップ2-VNCサーバーの構成

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

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

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

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

vncserver -kill :1

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

OutputKilling Xtightvnc process ID

`+ xstartup +`ファイルを変更する前に、元のファイルをバックアップします。

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

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

nano ~/.vnc/xstartup

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

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

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

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

sudo chmod +x ~/.vnc/xstartup

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

vncserver

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

OutputNew 'X' desktop is :1

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

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

ステップ3-VNCデスクトップを安全に接続する

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

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

ssh -L :127.0.0.1: -C -N -l

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

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

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

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

接続すると、デフォルトのXfceデスクトップが表示されます。

image:https://assets.digitalocean.com/articles/vnc_debian9/qOf5NgG.png [Debian 9サーバーへのVNC接続] * [デフォルトの構成を使用] *を選択して、デスクトップをすばやく構成します。

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

image:https://assets.digitalocean.com/articles/vnc_debian9/j6HsSCr.png [Debian 9へのVNC接続経由のファイル]

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

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

ステップ4-VNCをシステムサービスとして実行する

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

まず、お気に入りのテキストエディターを使用して、「+ / etc / systemd / system / vncserver @ .service +」という新しいユニットファイルを作成します。

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

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

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

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

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

PIDFile=/home//.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver  :%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 vncserver@1

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

sudo systemctl status vncserver@1

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

Output● [email protected] - Start TightVNC server at startup
  Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
  Active:  (running) since Wed 2018-09-05 16:47:40 UTC; 3s ago
 Process: 4977 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
 Process: 4971 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
Main PID: 4987 (Xtightvnc)

...

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

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

ssh -L :127.0.0.1: -C -N -l

次に、VNCクライアントソフトウェアを使用して、「+ localhost:5901+」への新しい接続を作成し、マシンに接続します。

結論

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