CentOS7にGNOMEデスクトップ用のVNCリモートアクセスをインストールして構成する方法
序章
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でネイティブに実行される各サービスには、yumインストーラーによって/lib/systemd/system
ディレクトリーの下に配置されるサービスユニットファイルがあります。 起動時に自動的に開始されるプロセスには、/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つの新しいインスタンスを開始することです。 これを行うには、/etc/system/system
の下に汎用VNCサービスユニットファイルの2つのコピーを作成する必要があります。 以下のコードスニペットでは、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)で実行され、janevncは5905[で実行されます。 X131X](5900 + 5)。
次に、各クライアントのサービスユニットファイルを編集します。 /etc/systemd/system/vncserver@:4.service
ファイルをviエディターで開きます。
sudo vi /etc/systemd/system/vncserver@:4.service
「クイックハウツー」セクションを見ると、最初のステップがすでに完了していることがわかります。 次に、残りの手順を実行する必要があります。 コメントは、VNCが信頼できない接続であることも示しています。 これについては後で説明します。
今のところ、ファイルの[Service]
セクションを編集して、<USER>
のインスタンスをjoevnc
に置き換えます。 また、ExecStart
パラメータの最後に-geometry 1280x1024
句を追加します。 これは、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を終了します。
同様に、viで/etc/systemd/system/vncserver@:5.service
ファイルを開き、ユーザー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 )の番号ではありません。 これは、サービス(5904
)自体のポート番号ではなく、表示番号 joevncのセッションがこのサーバーで実行されるためです。
次に、新しいターミナルセッションを開き、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セッションの保護
これまでのところ、joevncとjanevncはどちらも、暗号化されていないチャネルを介してリモートデスクトップにアクセスしています。 前に見たように、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アドレスを指定し、接続にわかりやすい名前を付けてから、保存ボタンをクリックして接続の詳細を保存します。 Hostnameフィールドにusername@your_server_ip
を指定したことに注意してください。
次に、左側のナビゲーションペインで SSH メニュー項目を展開し、X11項目を選択します。 これは、セッションのX11転送プロパティを示しています。 X11転送を有効にするのチェックボックスがオンになっていることを確認します。 これにより、SSHがサーバーとクライアント間を流れるXWindowsトラフィックを確実に暗号化します。
最後に、 SSH>Tunnelsを選択します。 Sourceポートフィールドに5900
と入力します。 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をインストールして実行する場合は、管理目的でのみ使用することを強くお勧めします。