序章

VNCまたはVirtualNetworkComputingは、プラットフォームに依存しないプロトコルであり、ユーザーがリモートコンピューターシステムに接続し、グラフィカルユーザーインターフェイス(GUI)からそのリソースを使用できるようにします。

これは、アプリケーションをリモート制御するようなものです。クライアントコンピューターのキーストロークまたはマウスクリックは、ネットワークを介してリモートコンピューターに送信されます。 VNCでは、両方のコンピューター間でクリップボードを共有することもできます。 Microsoft Windowsサーバーのバックグラウンドを持っている場合、VNCはリモートデスクトップサービスによく似ていますが、OS X、Linux、およびその他のオペレーティングシステムでも利用できる点が異なります。

ネットワーキングの世界の他のすべてと同様に、VNCはクライアントサーバーモデルに基づいています。VNCサーバーは、着信クライアント要求を処理するリモートコンピューター(ドロップレット)で実行されます。

目標

このチュートリアルでは、CentOS7にVNCサーバーをインストールして構成する方法を学習します。 TigerVNCGitHubリポジトリから無料で入手できるTigerVNCサーバーをインストールします。

VNCがどのように機能するかを示すために、CentOSサーバーにGNOMEデスクトップもインストールします。 2つのユーザーアカウントを作成し、それらのVNCアクセスを構成します。 次に、リモートデスクトップへの接続をテストし、最後に、SSHトンネルを介してリモート接続を保護する方法を学習します。

前提条件

このチュートリアルに示されているコマンド、パッケージ、およびファイルは、CentOS7の最小インストールでテストされています。 次のことをお勧めします。

  • ディストリビューション:CentOS 7、64ビット
  • リソース要件:2GBのRAMを搭載したドロップレット
  • このチュートリアルに従うには、sudoユーザーを使用する必要があります。 sudo特権がどのように機能するかを理解するには、このDigitalOceanチュートリアルを参照してください。

警告:本番Linuxサーバーでは、このチュートリアルのコマンド、クエリ、または構成を実行しないでください。 これにより、セキュリティの問題とダウンタイムが発生する可能性があります。

ステップ1—2つのユーザーアカウントを作成する

まず、2つのユーザーアカウントを作成します。 これらのアカウントは、VNCクライアントからCentOS7サーバーにリモート接続します。

  • joevnc
  • janevnc

次のコマンドを実行して、joevncのユーザーアカウントを追加します。

sudo useradd -c "User Joe Configured for VNC Access" joevnc

次に、 passwd コマンドを実行して、joevncのパスワードを変更します。

sudo passwd joevnc

出力では、新しいパスワードの入力を求められます。 提供されると、アカウントはログインの準備が整います。

Changing password for user joevnc.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

次に、janevncのアカウントを作成します。

sudo useradd -c "User Jane Configured for VNC Access" janevnc

janevncのパスワードを設定します。

sudo passwd janevnc

ステップ2—GNOMEデスクトップをインストールする

次に、GNOMEデスクトップをインストールします。 GNOMEは共同作業です。これは、非常に人気のあるデスクトップ環境を構成する無料のオープンソースソフトウェアのコレクションです。 KDEのような他のデスクトップ環境もありますが、GNOMEの方が人気があります。 VNCユーザーは、GNOMEを使用してデスクトップからサーバーと対話します。

sudo yum groupinstall -y "GNOME Desktop"

ネットワークの速度によっては、これには数分かかる場合があります。

パッケージグループがインストールされたら、サーバーを再起動します。

sudo reboot

トラブルシューティング—サーバーが起動フェーズでスタックする

サーバーのセットアップ方法によっては、マシンが起動したときに、次のようなメッセージを表示するブートフェーズのままになる場合があります。

Initial setup of CentOS Linux 7 (core)
1) [!] License information (Licence not accepted)
Please make your choice from above ['q' to quit | 'c' to continue | 'r' to refresh]:

これを乗り越えるには、 1 (ライセンス読み取り)、 2 (ライセンスの受け入れ)、 C (続行)の順に押します。 Cを2回以上押す必要がある場合があります。 下の画像はこれを示しています:

このエラーが表示されず、起動プロセスがスムーズな場合は、さらに良い方法です。次の手順に進むことができます。

ステップ3—TigerVNCサーバーのインストール

TigerVNCは、リモートデスクトップ接続を可能にするソフトウェアです。

TigerVNCサーバーをインストールします。

sudo yum install -y tigervnc-server

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

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile

. . .

Running transaction
  Installing : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64                                                      1/1
  Verifying  : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64                                                      1/1

Installed:
  tigervnc-server.x86_64 0:1.2.80-0.30.20130314svn5065.el7

Complete!

これで、VNCサーバーとGNOMEデスクトップがインストールされました。 また、VNCを介して接続するための2つのユーザーアカウントを作成しました。

ステップ4—2つのクライアント用のVNCサービスの構成

VNCサーバーは、最初にインストールされたときに自動的に起動しません。 これを確認するには、次のコマンドを実行します。

sudo systemctl status vncserver@:.service

出力は次のようになります。

vncserver@:.service - Remote desktop service (VNC)
   Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled)
   Active: inactive (dead)

次のコマンドを実行することもできます。

sudo systemctl is-enabled [email protected]

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

disabled

では、なぜそれが無効になっているのですか? これは、各ユーザーがVNCサービスデーモンの個別のインスタンスを開始するためです。 つまり、VNCは、すべてのユーザー要求を処理する単一のプロセスとして実行されるわけではありません。 VNCを介して接続する各ユーザーは、デーモンの新しいインスタンスを開始する必要があります(または、システム管理者がこれを自動化できます)。

CentOS 7は、systemdデーモンを使用して他のサービスを開始します。 systemdでネイティブに実行される各サービスには、サービスユニットファイルがあります。 /lib/systemd/system yumインストーラーによるディレクトリー。 起動時に自動的に開始されるプロセスには、このサービスユニットファイルへのリンクがあります。 /etc/systemd/system/ ディレクトリ。

この場合、汎用サービスユニットファイルは /lib/systemd/system/ ディレクトリですが、リンクが作成されていません /etc/systemd/system/. これをテストするには、次のコマンドを実行します。

sudo ls -l /lib/systemd/system/vnc*

君は見るべきだ:

-rw-r--r--. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/[email protected]

次に、以下を確認してください /etc/systemd/system/:

sudo ls -l /etc/systemd/system/*.wants/vnc*

これは存在しません:

ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory

したがって、最初のステップは、2人のユーザーのためにVNCサーバーの2つの新しいインスタンスを開始することです。 これを行うには、以下の汎用VNCサービスユニットファイルのコピーを2つ作成する必要があります。 /etc/system/system. 以下のコードスニペットでは、2つの異なる名前で2つのコピーを作成しています。

sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:4.service

sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:5.service

では、コピーしたファイル名に(コロンとともに)2つの数字を追加したのはなぜですか?

繰り返しますが、それは個々のVNCサービスの概念に戻ります。 VNC自体は、ポート5900で実行されます。 各ユーザーは独自のVNCサーバーを実行するため、各ユーザーは別々のポートを介して接続する必要があります。 ファイル名に数字を追加すると、VNCはそのサービスをサブポートとして実行するようになります。 5900. したがって、この場合、joevncのVNCサービスはポート5904(5900 + 4)で実行され、janevnc5905[で実行されます。 X131X](5900 + 5)。

次に、各クライアントのサービスユニットファイルを編集します。 を開きます /etc/systemd/system/vncserver@:4.service vi エディターを使用したファイル:

sudo vi /etc/systemd/system/vncserver@:4.service

「クイックハウツー」セクションを見ると、最初のステップがすでに完了していることがわかります。 次に、残りの手順を実行する必要があります。 コメントは、VNCが信頼できない接続であることも示しています。 これについては後で説明します。

今のところ、 [Service] ファイルのセクション、のインスタンスを置き換えます <USER>joevnc. また、を追加します -geometry 1280x1024 の最後にある句 ExecStart パラメータ。 これは、VNCに開始する画面サイズを指示するだけです。 合計2行を変更します。 編集したファイルは次のようになります(ファイル全体が表示されていないことに注意してください)。

# The vncserver service unit file
#
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service
# 2. Edit <USER> and vncserver parameters appropriately
#   ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2")
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.service`
#

. . .

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l joevnc -c "/usr/bin/vncserver %i -geometry 1280x1024" 
PIDFile=/home/joevnc/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

ファイルを保存してviを終了します。

同様に、 /etc/systemd/system/vncserver@:5.service viでファイルし、ユーザー janevncの変更を加えます。

sudo vi /etc/systemd/system/vncserver@:5.service

これがただ [Service] 変更がマークされたセクション:

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l janevnc -c "/usr/bin/vncserver %i -geometry 1280x1024"
PIDFile=/home/janevnc/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

次に、次のコマンドを実行して systemd デーモンをリロードし、起動時に2人のユーザーに対してVNCが起動することを確認します。

sudo systemctl daemon-reload

最初のサーバーインスタンスを有効にします。

sudo systemctl enable vncserver@:4.service

出力:

ln -s '/etc/systemd/system/vncserver@:4.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:4.service'

2番目のサーバーインスタンスを有効にします。

sudo systemctl enable vncserver@:5.service

出力:

ln -s '/etc/systemd/system/vncserver@:5.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:5.service'

これで、2つのVNCサーバーインスタンスが構成されました。

ステップ5—ファイアウォールの構成

次に、ポート5904および5905のみを通過するVNCトラフィックを許可するようにファイアウォールを構成する必要があります。 CentOS 7は、Firewalldデーモンを介してダイナミックファイアウォールを使用します。 変更を有効にするためにサービスを再起動する必要はありません。

firewalld サービスは、システムの起動時に自動的に開始されるはずですが、常に確認することをお勧めします。

sudo firewall-cmd --state

これは次のように表示されます。

running

何らかの理由で状態が「実行されていない」場合は、次のコマンドを実行して、実行されていることを確認します。

sudo systemctl start firewalld

次に、ポート5904および5905のルールを追加します。

sudo firewall-cmd --permanent --zone=public --add-port=5904-5905/tcp

出力:

success

ファイアウォールをリロードします。

sudo firewall-cmd --reload

出力:

success

ステップ6—VNCパスワードの設定

私たちは、VNCの動作を確認することから一歩離れています。 このステップでは、ユーザーはVNCパスワードを設定する必要があります。 これらはではなくユーザーのLinuxパスワードですが、VNCセッションにログインするためのパスワードです。

CentOS 7サーバーへの別の端末接続を開き、今度はjoevncとしてログインします。

ssh joevnc@your_server_ip

次のコマンドを実行します。

vncserver

以下の出力に示すように、サーバーはjoevncにVNCパスワードの設定を要求します。 パスワードを入力すると、プログラムはユーザーのホームディレクトリに作成されているいくつかのファイルも表示します。

You will require a password to access your desktops.

Password:
Verify:
xauth:  file /home/joevnc/.Xauthority does not exist

New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1

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

行を見てみましょう New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1. この例では、localhost.localdomainがサーバー名でした。 あなたの場合、それは異なる可能性があります。 サーバー名の後の数字に注意してください:( 1 、コロンで区切られます)。 joevnc のサービスユニットファイル( 4 )の番号ではありません。 これは、表示番号 joevnc のセッションが、サービスのポート番号ではなく、このサーバーで実行されるためです(5904)それ自体。

次に、新しいターミナルセッションを開き、janevncとしてログインします。 ここでも、VNCサーバーを起動し、janevncのパスワードを設定します。

vncserver

janevncのセッションがディスプレイ2で実行されることを示す同様の出力が表示されます。

最後に、メインターミナルセッションからサービスをリロードします。

sudo systemctl daemon-reload
sudo systemctl restart vncserver@:4.service
sudo systemctl restart vncserver@:5.service

ステップ7—VNCクライアントを使用したリモートデスクトップへの接続

このチュートリアルでは、ユーザーjoevncおよびjanevncがWindowsコンピューターからCentOS7サーバーに接続しようとしていると想定します。

リモートデスクトップにログインするには、それぞれWindows用のVNCクライアントが必要です。 このクライアントは、グラフィカルな出力を表示することを除けば、PuTTYのようなターミナルクライアントと同じです。 利用可能なVNCクライアントはさまざまですが、使用するのはRealVNCで、ここで利用できます。 Mac OSX用のVNCViewerは、同じページからダウンロードできます。MacバージョンはWindowsバージョンとかなり似ています。

VNCビューアーを起動すると、次のようなダイアログボックスが表示されます。

VNCサーバーフィールドに、CentOS7サーバーのIPアドレスを追加します。 サーバーのIPの後にポート番号5904をコロンで区切って指定します()。 5904 は、 joevnc のVNCサービスポートであるため、使用しました。

また、VNCViewerに暗号化方式を選択させることにしました。 このオプションは、ネットワークを介して送信されるパスワードのみを暗号化します。 サーバーとのその後の通信は暗号化されません。 (最後のステップで安全なSSHトンネルを設定します。)

実際、警告メッセージは次のことを示しています。

今のところ警告を受け入れます。 パスワードプロンプトが表示されます。

前に設定したjoevncのVNCパスワードを入力します。

新しいウィンドウが開き、リモートCentOSサーバーのGNOMEデスクトップが表示されます。

デフォルトのウェルカムメッセージを受け入れます。

これで、joevncはGNOME計算機のようなグラフィカルツールを起動できます。

このデスクトップ接続は開いたままにしておくことができます。

これで、janevncはCentOSサーバーとの別のVNCセッションを開始することもできます。 IPアドレスは同じで、ポートは5905です。

janevncがVNCViewerを介してログインすると、 joevnc の場合と同じように、ウェルカムメッセージが表示された空のデスクトップが表示されます。 つまり、2人のユーザーはデスクトップインスタンスを共有していません。 joevncのデスクトップにはまだ電卓が表示されているはずです。

リモートデスクトップセッションを閉じるには、ウィンドウを閉じるだけで十分です。 ただし、これによってサーバーのバックグラウンドでユーザーのVNCサービスが停止することはありません。 サービスが停止または再起動されておらず、マシンが再起動されていない場合、同じデスクトップセッションが次回のログオン時に表示されます。

joevncおよびjanevncのVNCビューアーウィンドウを閉じます。 ターミナルセッションも閉じます。 メインターミナルウィンドウから、VNCサービスがまだ実行されているかどうかを確認します。

sudo systemctl status vncserver@:4.service

出力は、リモートデスクトップがまだ実行中であることを示しています。

vncserver@:4.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled)
   Active: active (running) since Sat 2014-11-01 12:06:49 EST; 58min ago
  Process: 2014 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS)
  
. . .

2番目のサービスを確認してください。

sudo systemctl status vncserver@:5.service

これも実行されています:

vncserver@:5.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:5.service; enabled)
   Active: active (running) since Sat 2014-11-01 12:42:56 EST; 22min ago
  Process: 3748 ExecStart=/sbin/runuser -l janevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS)
  
. . .

この時点でjoevncのデスクトップに再度ログインしたい場合は、同じ電卓アプリが開いているのがわかります。

これは、システム管理者にとっていくつかの興味深い課題を提示します。 VNCを介してサーバーに接続しているユーザーが多数いる場合は、不要になったときにVNCサービスを停止する方法を考案することをお勧めします。 これにより、貴重なシステムリソースを節約できる場合があります。

トラブルシューティング—VNCサービスのクラッシュ

VNCをテストして試してみると、サービスがクラッシュして回復できない場合があります。 ステータスを確認しようとすると:

sudo systemctl status vncserver@:4.service

この長いエラーメッセージが表示される場合があります。

vncserver@:4.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled)
   Active: failed (Result: exit-code) since Fri 2014-11-07 00:02:38 EST; 2min 20s ago
  Process: 2221 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=2)
  Process: 1257 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)

サービスを開始しようとしても機能しません。

sudo systemctl start vncserver@:4.service

起動に失敗しました:

Job for vncserver@:4.service failed. See 'systemctl status vncserver@:4.service' and 'journalctl -xn' for details.

通常、理由は簡単です。 小切手 /var/log/messages:

sudo tail  /var/log/messages

関連するエラーは次のようになります。

Nov  7 00:08:36 localhost runuser: Warning: localhost.localdomain:4 is taken because of /tmp/.X11-unix/X4
Nov  7 00:08:36 localhost runuser: Remove this file if there is no X server localhost.localdomain:4
Nov  7 00:08:36 localhost runuser: A VNC server is already running as :4
Nov  7 00:08:36 localhost systemd: vncserver@:4.service: control process exited, code=exited status=2
Nov  7 00:08:36 localhost systemd: Failed to start Remote desktop service (VNC).
Nov  7 00:08:36 localhost systemd: Unit vncserver@:4.service entered failed state.
Nov  7 00:08:36 localhost systemd: Failed to mark scope session-c3.scope as abandoned : Stale file handle

解決策は、 /tmpフォルダーの下にあるファイルを削除することです。

sudo rm -i /tmp/.X11-unix/X4

出力:

rm: remove socket ‘/tmp/.X11-unix/X4’? y

次に、VNCサービスを開始します。

sudo systemctl start vncserver@:4.service

一般的なトラブルシューティング

比較的まれですが、VNCを使用しているときに他のエラーが発生する場合があります。 たとえば、リモートデスクトップ画面が空白になったりハングしたり、セッションが不可解なエラーメッセージでクラッシュしたり、VNCビューアーが正しく接続されなかったり、GUIにコマンドを送信してアプリケーションを起動したりする場合があります。

チェックすることをお勧めします /var/log/messages より良い理解を得るためにファイル。 サーバーを再起動する必要がある場合もあれば、極端な場合はVNCサービスを再作成する必要がある場合もあります。

システムリソースも原因となる可能性があります。 ドロップレットなどにRAMを追加する必要がある場合があります。

ステップ8—SSHトンネリングによるVNCセッションの保護

これまでのところ、joevncjanevncはどちらも、暗号化されていないチャネルを介してリモートデスクトップにアクセスしています。 前に見たように、VNCビューアーは接続時にこれについて警告します。 セッションの開始時にパスワードのみが暗号化されます。 その後のネットワークトラフィックとデータ転送は、誰でも途中で傍受できるようになっています。

SSHトンネリングについて

これは、Secure Shell(SSH)セッションが役立つ場合があります。 SSHを使用すると、VNCはSSH暗号化セッションのコンテキスト内で実行できます。 これはトンネリングとして知られています。 実際、VNCトラフィックはSSHプロトコルに便乗し、サーバーとのすべての通信が暗号化されます。 SSHがVNCに対するラップアラウンド保護を提供し、VNCがSSH内のトンネル内にあるかのように実行されているため、トンネル処理と呼ばれます。 SSHトンネリングは、POP、X、IMAPなどの他のプロトコルにも使用できます。

SSHトンネリングは、ポートフォワーディングで機能します。これは、基本的に、ある特定のポートから別のマシンの別のポートにアクセスを変換する手段です。 ポートフォワーディングでは、クライアントアプリケーションがマシンAで実行されているポートAに接続すると、マシンBで実行されているポートBに透過的に転送されます。 クライアントアプリケーションはこの変換を認識せず、元のポートに接続していると見なします。 ポートフォワーディングはSSHプロトコルの機能の1つです。

SSHトンネリングの詳細については、このチュートリアルをお読みください。

このチュートリアルでは、ポート 5904 joevnc の場合)および 5905 janevnc の場合)で実行するようにVNCを構成しました。

ポートフォワーディングを使用すると、ローカルクライアントコンピューターのポート 5900 に接続するようにローカルVNCクライアントを設定できます。これは、リモートサーバーのポート5905にマップできます。 これはjanevncの接続の例ですが、他のクライアントでも同じ手順を簡単に実行できます。

VNCクライアントアプリケーションが起動すると、localhostのポート5900を指すことができ、ポート転送により、リモートサーバーのポート5905に透過的に転送されます。 。

注:接続を安全にするには、SSHセクションを毎回開始する必要があります。

OS X

Macで、Terminalを開きます。

次の接続情報を入力してください。必ず置き換えてください。 your_server_ip リモートサーバーのIPアドレスを使用:

ssh -L 5900:your_server_ip:5905 janevnc@your_server_ip -N

janevncのUNIXパスワードを入力します。 接続がハングしているように見えます。 リモートデスクトップを使用している限り、実行を続けることができます。

次に、VNCビューアの手順に進んでください。

ウィンドウズ

janevnc のVNCセッションを保護するために、ローカルWindowsコンピューターにPuTTYがインストールされていると想定します。 PuTTYは無料で、こちらからダウンロードできます。

janevnc のVNCおよびターミナルセッションがまだ閉じられていない場合は、ここで閉じます。

PuTTYを起動します。 セッション画面で、サーバーのIPアドレスを指定し、接続にわかりやすい名前を付けてから、保存ボタンをクリックして接続の詳細を保存します。 指定方法に注意してください username@your_server_ip ホスト名フィールド:

次に、左側のナビゲーションペインで SSH メニュー項目を展開し、X11項目を選択します。 これは、セッションのX11転送プロパティを示しています。 X11転送を有効にするのチェックボックスがオンになっていることを確認します。 これにより、SSHがサーバーとクライアント間を流れるXWindowsトラフィックを確実に暗号化します。

最後に、 SSH>Tunnelsを選択します。 タイプ 5900 Sourceポートフィールド。 Destination フィールドで、サーバーの名前またはIPアドレスを指定し、その後にコロンと目的のユーザーのVNCポート番号を指定します。 私たちの場合、 your_server_ip:5905.

または、ポート5902を使用することもできます。 この場合の2は、 janevnc の表示番号になります(janevncが実行されたときに表示されるメッセージを思い出してください。 vncserver 指図)。

追加ボタンをクリックすると、転送ポートの下にマッピングが追加されます。 ここで、SSHセッションのポート転送を追加します。 ユーザーがポート5900でローカルホストに接続すると、接続はSSHを介してリモートサーバーのポート5905に自動的にトンネリングされます。

Sessions アイテムに戻り、janevncのセッションを保存します。 Open ボタンをクリックすると、janevncの新しいターミナルセッションが開きます。 適切なUNIXパスワードを使用してjanevncとしてログインします。

VNCビューア

次に、VNCビューアを再度起動します。 今回は、 VNCサーバーアドレス、<^>と入力し、VNCサーバーに暗号化方法を選択させます。

接続ボタンをクリックします。

暗号化されていないセッションについて警告するダイアログボックスは引き続き表示されますが、今回は無視しても問題ありません。 VNCビューアーは、転送先のポート(これは開始したばかりのSSHセッションで設定されたもの)を認識せず、ローカルマシンに接続しようとしていると想定します。

この警告を受け入れると、おなじみのパスワードプロンプトが表示されます。 janevnc のVNCパスワードを入力して、リモートデスクトップにアクセスします。

では、セッションが暗号化されていることをどうやって知るのでしょうか? 考えてみれば、SSHセッションでポートフォワーディングを設定しました。 SSHセッションが確立されていなかった場合、ポート転送は機能しませんでした。 実際、ターミナルウィンドウを閉じてPuTTYセッションからログアウトし、VNCビューアーのみで接続しようとすると、接続は次のようになります。 localhost:5900 次のエラーメッセージが表示されます。

だから、 localhost:5900 接続が機能すると、接続が暗号化されていることを確信できます。

接続が常に暗号化されていることを確認するために、VNCを使用するたびに最初にSSH接続を確立する必要があることに注意してください。

結論

GUIフロントエンドからCentOSLinuxシステムにアクセスすると、システム管理がはるかに簡単になります。 どのクライアントオペレーティングシステムからでも接続でき、Webベースのホスティングコントロールパネルに依存する必要はありません。 VNCは、ほとんどのコントロールパネルと比較してフットプリントがはるかに小さくなっています。

2人の通常のユーザーがVNCクライアントに接続する方法を示しましたが、これは深刻な実稼働環境ではほとんど実用的ではありません。 実際には、ユーザーはサーバーにアクセスするためのカスタマイズされたアプリケーションまたはブラウザーを使用できます。 ユーザーごとに多数のVNCサービスを実行すると、それに関連する固有のリスクは言うまでもなく、システムリソースに不要な負担がかかります。

本番LinuxサーバーにVNCをインストールして実行する場合は、管理目的でのみ使用することを強くお勧めします。