序章

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

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

##前提条件

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

  • Debian9初期サーバーセットアップガイドに従ってセットアップされた1台のDebian9サーバー。 sudo アクセスとファイアウォール。
  • SSHトンネルを介したVNC接続をサポートするVNCクライアントがインストールされたローカルコンピューター。
    • Windowsでは、 TightVNC RealVNC 、またはUltraVNCを使用できます。
    • macOSでは、組み込みの画面共有プログラムを使用するか、RealVNCなどのクロスプラットフォームアプリを使用できます。
    • Linuxでは、次のような多くのオプションから選択できます。 vinagre, krdc RealVNC 、またはTightVNC

ステップ1—デスクトップ環境とVNCサーバーをインストールする

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

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

  1. sudo apt update

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

  1. sudo apt install xfce4 xfce4-goodies

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

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

  1. sudo apt install tightvncserver

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

  1. vncserver

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

Output
You will require a password to access your desktops. Password: Verify:

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

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

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

Output
Would 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サーバーを構成しましょう。

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

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

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

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

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

  1. vncserver -kill :1

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

Output
Killing Xtightvnc process ID 17648

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

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

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

  1. nano ~/.vnc/xstartup

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

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

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

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

  1. sudo chmod +x ~/.vnc/xstartup

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

  1. vncserver

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

Output
New 'X' desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

構成が整ったら、ローカルマシンからサーバーに接続しましょう。

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

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

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

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

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

交換することを忘れないでください sammyyour_server_ip サーバーのsudonon-rootユーザー名とIPアドレスを使用します。

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

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

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

デフォルトの構成を使用を選択して、デスクトップをすばやく構成します。

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

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

次に、VNCサーバーをサービスとしてセットアップしましょう。

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

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

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

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

The @ 名前の最後にある記号を使用すると、サービス構成で使用できる引数を渡すことができます。 これを使用して、サービスを管理するときに使用する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=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

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

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

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

  1. sudo systemctl daemon-reload

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

  1. sudo systemctl enable [email protected]

The 1 次の @ 記号は、サービスが表示される表示番号を示します。この場合はデフォルトです。 :1 ステップ2で説明したように…

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

  1. vncserver -kill :1

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

  1. sudo systemctl start vncserver@1

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

  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: 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トンネルを再度開始します。

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

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

結論

これで、Debian9サーバー上でセキュリティで保護されたVNCサーバーが稼働しています。 これで、使いやすく使い慣れたグラフィカルインターフェイスを使用してファイル、ソフトウェア、および設定を管理できるようになり、Webブラウザなどのグラフィカルソフトウェアをリモートで実行できるようになります。