CentOS 7でGNOMEデスクトップのVNCリモートアクセスをインストールおよび構成する方法

前書き

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

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

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

目標

このチュートリアルでは、CentOS 7にVNCサーバーをインストールして構成する方法を学びます。 TigerVNC GitHub repositoryから無料で入手できるTigerVNCサーバーをインストールします。

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

前提条件

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

  • ディストリビューション:CentOS 7、64ビット

  • リソース要件:2 GB RAMのドロップレット

  • このチュートリアルに従うには、sudoユーザーを使用する必要があります。 sudo特権の仕組みを理解するには、https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos [このDigitalOceanチュートリアル]を参照してください。

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

ステップ1-2つのユーザーアカウントの作成

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

  • joevnc

  • ヤネフンク

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

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

次に、コマンドを実行して* 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回以上押す必要がある場合があります。 以下の画像はこれを示しています。

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/1.jpg [GNOMEデスクトップのインストール後のCentOS 7でのブートフェーズメッセージ]

このエラーが表示されず、起動プロセスがスムーズであれば、さらに良いことです。次のステップに進むことができます。

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

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

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

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の下でネイティブに実行される各サービスには、yumインストーラーによって `+ / lib / systemd / system `ディレクトリの下に配置される_service unit file_があります。 ブート時に自動的に開始されるプロセスには、このサービスユニットファイルへのリンクが ` / 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自体はポートで実行されます。 各ユーザーは独自のVNCサーバーを実行するため、各ユーザーは個別のポートを介して接続する必要があります。 ファイル名に数字を追加すると、VNCはそのサービスを「5900」の_sub-port_として実行します。 したがって、この場合、* joevnc のVNCサービスはポート(5900 + 4)で実行され、 janevnc *のポートは(5900 + 5)で実行されます。

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

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

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

今のところ、ファイルの `+ [Service] `セクションを編集して、 ` <USER> `のインスタンスを `+`に置き換えます。 また、 `+ 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  -c "/usr/bin/vncserver %i "
PIDFile=/home//.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  -c "/usr/bin/vncserver %i "
PIDFile=/home//.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

次に、次のコマンドを実行してデーモンをリロードし、起動時に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は、デーモンを介して動的ファイアウォールを使用します。変更を有効にするためにサービスを再起動する必要はありません。

サービスはシステムのブート時に自動的に開始する必要がありますが、常に確認することをお勧めします。

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@

次のコマンドを実行してください。

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 +)自体ではなく、このサーバーで実行される_display number_ * 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コンピューターからCentOS 7サーバーに接続しようとしていると仮定します。

リモートデスクトップにログインするには、Windows用のVNCクライアントが必要です。 このクライアントは、グラフィカル出力を表示することを除けば、PuTTYのようなターミナルクライアントとまったく同じです。 さまざまなVNCクライアントが利用可能ですが、使用するのはRealVNCで、https://www.realvnc.com/download/viewer/ [こちら]から入手できます。 Mac OS X用のVNC Viewerは同じページからダウンロードでき、MacバージョンはWindowsバージョンとかなり似ています。

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

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/2.jpg [RealVNC Viewer Interface]

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

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

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/3.jpg [joevncとしてRealVNCビューアーを使用してCentOS 7サーバーに接続]

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

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/4.jpg [VNC暗号化警告]

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

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/5.jpg [VNCパスワードプロンプト]

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

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

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/6.jpg [CentOS7リモートデスクトップ]

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

  • joevnc *はGNOME電卓のようなグラフィカルツールを起動できるようになりました。

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/7.jpg [リモートデスクトップからのGNOME電卓の起動]

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/8.jpg [GNOME Calculator]

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

  • janevnc *は、CentOSサーバーとの別のVNCセッションも開始できるようになりました。 IPアドレスは同じで、ポートは次のとおりです。

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/9.jpg [janevncとしてRealVNCビューアーを使用してCentOS 7サーバーに接続]

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

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

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

sudo systemctl status vncserver@:4.service

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

vncserver@:4.service - Remote desktop service (VNC)
  Loaded:
  Active:  since Sat 2014-11-01 12:06:49 EST; 58min ago
 Process: 2014 ExecStart=/sbin/runuser -l  -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:
  Active:  since Sat 2014-11-01 12:42:56 EST; 22min ago
 Process: 3748 ExecStart=/sbin/runuser -l  -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:  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

起動に失敗しました:

. 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

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

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

出力:

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

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

sudo systemctl start vncserver@:4.service

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

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

理解を深めるために、 `+ / var / log / messages`ファイルを確認することをお勧めします。 サーバーを再起動する必要がある場合もあれば、極端な場合にはVNCサービスを再作成する必要がある場合もあります。

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

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

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

  • SSHトンネリングについて*

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

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

SSHトンネリングの詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-tunneling-on-a-vps [このチュートリアル]を参照してください。

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

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

VNCクライアントアプリケーションが起動すると、* localhost のポート 5900 を指すことができ、ポートフォワーディングはそれをリモートサーバーのポート 5905 *に透過的に転送します。

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

  • OS X *

Macで、* Terminal *を開きます。

次の接続情報を入力します。必ず「++」をリモートサーバーのIPアドレスに置き換えてください。

ssh -L 5900::5905 janevnc@ -N
  • janevnc *のUNIXパスワードを入力します。 接続がハングしたように見えます。リモートデスクトップを使用している限り、それを実行し続けることができます。

VNC Viewerの指示に進んでください。

  • Windows *

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

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

PuTTYを起動します。 セッション画面で、サーバーのIPアドレスを指定し、接続にわかりやすい名前を付けてから、[保存]ボタンをクリックして接続の詳細を保存します。 * Hostname *フィールドで `+ @ +`を指定したことに注意してください。

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/10.jpg [PuTTY構成のセッションの詳細]

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

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/11.jpg [PuTTY構成でのX11転送]

最後に、* SSH> Tunnels を選択します。 * Source * portフィールドに「5900」と入力します。 [*宛先]フィールドで、サーバーの名前またはIPアドレスを指定し、その後に目的のユーザーのコロンとVNCポート番号を指定します。 私たちの場合、 `+:5905 +`を指定しました。

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

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

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/12.jpg [PuTTY構成でのSSHトンネリング]

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

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/13.jpg [janevncのSSHターミナルセッション]

  • VNCビューアー*

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

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/14.jpg [VNCビューアーをポート転送でローカルホストに接続]

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

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

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

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

image:https://assets.digitalocean.com/articles/Install_VNC_Gnome/15.jpg [VNC Viewerエラーメッセージ]

したがって、 `+ localhost:5900 +`接続が機能する場合、接続が暗号化されていると確信できます。

VNCを使用するたびにSSH接続を最初に確立し、接続が常に暗号化されるようにすることを忘れないでください。

結論

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

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

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