このチュートリアルでは、CentOS7システムにVNCサーバーをインストールして構成する手順を説明します。また、SSHトンネルを介してVNCサーバーに安全に接続する方法についても説明します。
Virtual Network Computing(VNC)は、キーボードとマウスを使用して別のコンピューターをリモート制御できるグラフィカルデスクトップ共有システムです。
前提条件#
チュートリアルを続行する前に、sudo権限を持つユーザーとしてログインしていることを確認してください。 linuxizeという名前のユーザーとしてログインしていることを前提としています 。
Xfceデスクトップ環境のインストール#
CentOSサーバーのインストールには、デスクトップ環境がインストールされていないことが多いため、軽量のデスクトップ環境をインストールすることから始めます。
Xfceをインストールします。高速で安定しており、システムリソースが少ないため、リモートサーバーでの使用に最適です。
XfceパッケージはEPELリポジトリで入手できます。サーバーでリポジトリが有効になっていない場合は、次のように入力してリポジトリを有効にできます。
sudo yum install epel-release リポジトリが追加されたら、次のコマンドを使用してXfceをCentOSにインストールします。
sudo yum groupinstall xfce システムによっては、Xfceパッケージと依存関係のダウンロードとインストールに時間がかかる場合があります。
VNCサーバーのインストール#
選択するVNCサーバーとしてTigerVNCを使用します。 TigerVNCは、積極的に保守されている高性能のオープンソースVNCサーバーです。
次のコマンドを入力して、CentOSサーバーにTigerVNCをインストールします。
sudo yum install tigervnc-server
VNCサーバーがインストールされたので、次のステップはvncserverを実行することです。 コマンド。初期構成を作成し、パスワードを設定します。次のコマンドを実行するときは、sudoを使用しないでください。
vncserver パスワードを入力して確認し、表示専用パスワードとして設定するかどうかを確認するメッセージが表示されます。表示専用パスワードを設定することを選択した場合、ユーザーはマウスとキーボードを使用してVNCインスタンスを操作できなくなります。
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth: file /home/linuxize/.Xauthority does not exist
New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log
初めてvncserver コマンドを実行すると、パスワードファイルが作成されて~/.vncに保存されます。 存在しない場合に作成されるディレクトリ。
:1に注意してください 上記の出力のホスト名の後に。これは、vncサーバーが実行されている表示ポート番号を示します。この場合、サーバーはTCPポート5901で実行されています (5900 + 1)。 vncserverを使用して2番目のインスタンスを作成する場合 次の空きポート、つまり:2で実行されます 、これは、サーバーがポート5902で実行されていることを意味します (5900 + 2)。
覚えておくべき重要なことは、VNCサーバーを操作するときは、:X 5900+Xを参照するディスプレイポートです 。
次の手順に進む前に、まずvncserverを使用してVNCインスタンスを停止します -killを使用したコマンド オプションと引数としてのサーバー番号。この場合、サーバーはポート5901(:1)で実行されています。 )、それで停止します:
vncserver -kill :1 Killing Xvnc process ID 2432
VNCサーバーの構成#
XfceとTigerVNCの両方がサーバーにインストールされたので、次のステップはXfceを使用するようにTigerVNCを構成することです。これを行うには、次のファイルを開きます。
nano ~/.vnc/xstartup
そして、最後の行をexec /etc/X11/xinit/xinitrcから変更します。 exec startxfce4へ :
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 ファイルを保存して閉じます。上記のスクリプトは、TigerVNCサーバーを起動または再起動するたびに自動的に実行されます。
追加のオプションをVNCサーバーに渡す必要がある場合は、~/.vnc/configを開きます。 ファイルを作成し、1行に1つのオプションを追加します。最も一般的なオプションはファイルにリストされています。コメントを外して、好みに合わせて変更します。
次に例を示します:
〜/ .vnc / config# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared
dpi=96 Systemdユニットファイルの作成#
他のsystemdサービスと同じように、必要に応じてVNCサービスを簡単に開始、停止、再起動できるsystemdユニットファイルを作成します。
cpを使用してvncserverユニットファイルをコピーします コマンド:
sudo cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service テキストエディタでファイルを開き、黄色で強調表示されている行を編集して、「linuxize」を実際のユーザー名に置き換えます。
sudo nano /etc/systemd/system/vncserver@\:1.service /etc/systemd/system/vncserver@:1.service [Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=linuxize
Group=linuxize
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %I
PIDFile=/home/linuxize/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target ファイルを保存して閉じます。次のコマンドで新しいユニットファイルを作成したことをsystemdに通知します:
sudo systemctl daemon-reload 次のステップは、次のコマンドでユニットファイルを有効にすることです。
sudo systemctl enable vncserver@:1.service
番号1 @の後 signは、VNCサービスが実行される表示ポートを定義します。この例では、これがデフォルトの1 、およびVNCサーバーはポート5901でリッスンします 、前のセクションで説明したように。
以下を実行してVNCサービスを開始します:
sudo systemctl start vncserver@:1.service サービスが正常に開始されていることを確認します:
sudo systemctl status vncserver@:1.service ● vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-04-06 19:27:47 UTC; 16s ago
Process: 909 ExecStart=/usr/bin/vncserver %I (code=exited, status=0/SUCCESS)
Process: 891 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 923 (Xvnc)
...
VNCサーバーへの接続#
VNCは暗号化されたプロトコルではないため、パケットスニッフィングの対象となる可能性があります。推奨されるアプローチは、ポート5901のローカルマシンから同じポートのサーバーにトラフィックを安全に転送するSSHトンネルを作成することです。
LinuxおよびmacOSでSSHトンネリングを設定する#
Linux、macOS、またはその他のUnixベースのオペレーティングシステムをマシンで実行している場合は、次のsshを使用してトンネルを簡単に作成できます。 コマンド:
ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address ユーザーパスワードの入力を求められます。
usernameを置き換えることを忘れないでください およびserver_ip_address ユーザー名とサーバーのIPアドレスを使用します。
WindowsでSSHトンネリングを設定する#
Windowsを実行している場合は、PuTTYSSHクライアントを使用してSSHトンネリングを設定できます。
Puttyを開き、サーバーのIPアドレスをHost name or IP addressに入力します フィールド。
Connectionの下 メニューで、SSHを展開します Tunnelsを選択します 。 VNCサーバーポートを入力します(5901 )Source Port フィールドに入力し、server_ip_address:5901と入力します Destinationで フィールドをクリックし、Addをクリックします 下の画像に示すボタン:
Sessionに戻ります 毎回入力する必要がないように設定を保存するページ。
リモートサーバーにログインするには、保存されているセッションを選択し、Openをクリックします。 ボタン
Vncviewerを使用した接続#
SSHトンネリングを設定したので、Vncviewerを開き、localhost:5901でVNCサーバーに接続します。 。
TigerVNC、TightVNC、RealVNC、UltraVNC、Vinagre、VNC Viewer forGoogleChromeなどの任意のVNCビューアを使用できます。
この例では、TigerVNCを使用します。 VNCビューアを開き、localhost:5901と入力します 、Connectをクリックします ボタン。
プロンプトが表示されたらパスワードを入力すると、デフォルトのXfceデスクトップが表示されます。次のようになります:
これで、キーボードとマウスを使用して、ローカルマシンからリモートXFCEデスクトップとの対話を開始できます。