ウェブサイト検索

Apache Guacamoleを使用してVNC接続を作成する方法


Apache Guacamoleを使用してVNC接続を作成する方法

このページで

  1. 前提条件
  2. ステップ1 - サーバーにデスクトップGUIをインストールする
  3. ステップ2 - TigerVNCサーバーをインストールする
  4. ステップ3 - VNCユーザーの認証情報を作成する
  5. ステップ4 - VNC Systemd ユニットファイルを作成する
  6. ステップ5 - VNCサーバーを開始する
  7. ステップ6 - ファイアウォールを設定する
  8. ステップ7 - CentOS/Rocky Linux/AlmaLinuxサーバーへのVNC接続を作成する

    1. VNCを使用してマシンにアクセスします
  9. ステップ8 - リモートUbuntu/DebianサーバーへのVNC接続を作成する

    1. SSHトンネルを作成する
    2. VNCを使用してマシンにアクセスします
  10. 結論

最近、Rocky Linux 8 ベースのサーバーで SSH 接続を作成するために Apache Guacamole をインストールして使用する方法を学びました。Guacamole の最も人気のある使い方の1つは、VNC(バーチャルネットワークコンピューティング)ビューワーとして使用することです。VNC を使用すると、サードパーティのクライアントをインストールすることなく、どこからでもデスクトップやサーバーにアクセスできます。

このチュートリアルでは、LinuxサーバーにVNCをインストールし、Guacamoleを使用してVNC接続を作成する方法を学びます。すべての一般的なディストリビューションをカバーし、必要に応じて違いを指定します。

前提条件

    Rocky Linux、CentOS、AlmaLinux、Ubuntu、またはDebianを実行しているサーバー。

    Apache Guacamoleをインストールする必要があります。同様のチュートリアルに従ってください。

    接続しているサーバーには、sudo権限を持つ非ルートユーザーが利用可能です。

    リモートサーバーにおいてスムーズなVNC接続のためには、最低2つのCPUコアと4GBのRAMが必要です。

    すべてが最新であることを確認してください。

    CentOS/Rocky Linux/AlmaLinux

    sudo dnf update
    

    Ubuntu/Debian

    sudo apt update && sudo apt upgrade
    

    基本的なユーティリティパッケージをインストールします。中にはすでにインストールされているものもあります。

    CentOS/Rocky Linux/AlmaLinux

    sudo dnf install wget curl nano unzip yum-utils -y
    

    Ubuntu/Debian

    sudo apt install wget curl nano unzip -y
    

ステップ1 - サーバーにデスクトップGUIをインストールする

私たちのチュートリアルでは、Xfceグラフィカル環境をインストールします。ただし、任意の環境をインストールすることもできます。次のコマンドを実行してGUIをインストールしてください。

CentOS/Rocky Linux/AlmaLinux

sudo dnf install -y epel-release
sudo dnf groupinstall -y "Xfce" "base-x"
sudo systemctl set-default graphical
sudo reboot

もしあなたが私たちのApache Guacamoleチュートリアルをフォローしているなら、EPELリポジトリはすでにインストールされているため、最初のコマンドをスキップできます。2つ目のコマンドは実際のグラフィカル環境とライブラリをインストールし、3つ目のコマンドはGUI環境をデフォルトとして設定します。インストールが有効になるためには、サーバーを再起動する必要があります。

Ubuntu/Debian

sudo apt install xfce4 xfce4-goodies
sudo systemctl set-default graphical
sudo reboot

ステップ2 - TigerVNCサーバーをインストールする

システムにインストールできるVNCサーバーアプリケーションは多数あります。私たちのチュートリアルでは、TigerVNCサーバーソフトウェアをインストールします。

次のコマンドを実行して、TigerVNCサーバーをインストールします。

CentOS/Rocky Linux/AlmaLinux

sudo dnf install tigervnc-server

Ubuntu/Debian

sudo apt install tigervnc-standalone-server

ステップ3 - VNCユーザーの認証情報を作成する

次のステップは、接続を行うためのVNC用のシステムユーザーを作成することです。

CentOS/Rocky Linux/AlmaLinux

次のコマンドを実行して新しいユーザーを作成し、パスワードを設定します。vncuserを任意のユーザー名に置き換えてください。

sudo adduser vncuser
sudo passwd vncuser

次のステップは、VNCクライアントからあなたのマシン上のサーバーに接続するために使用されるアクセスパスワードを作成することです。

vncuserに切り替えます。

sudo su - vncuser

VNCアクセスのパスワードを設定します。

vncpasswd 
Password:
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Verify:

パスワードを作成し、それを確認するよう求められます。次に、表示専用のパスワードを作成したいかどうか尋ねられます。表示専用のパスワードは、VNCアクセスをシステムの表示のみに制限し、マウスやキーボードを使用したインタラクションを禁止したい場合に便利です。そのようなパスワードを設定したい場合はyを入力し、プロセスを終了したい場合はnを入力してください。

vncuserシェルから出る。

exit

Ubuntu/Debian

次のコマンドを実行して新しいユーザーを作成し、パスワードを設定します。vncuserを任意のユーザー名に置き換えてください。

sudo adduser vncuser
Adding user `vncuser' ...
Adding new group `vncuser' (1001) ...
Adding new user `vncuser' (1001) with group `vncuser' ...
Creating home directory `/home/vncuser' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for vncuser
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y

vncuserに切り替えます。

sudo su - vncuser

VNCアクセスのパスワードを設定します。

vncpasswd 
Password:
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Verify:

TigerVNCがXfceを使用するようにスタートアップファイルを設定する必要があります。

ファイル ~/.vnc/xstartup を編集のために開きます。

sudo nano ~/.vnc/xstartup

そのコードをそこに貼り付けてください。

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 

ファイルを保存するには、Ctrl + Xを押し、保存するように求められたらYを入力してください。

VNCの追加オプションはファイル~/.vnc/configを介して設定できます。ファイルを作成して編集のために開いてください。

sudo nano ~/.vnc/config

そのコードをそこに貼り付けてください。

geometry=1024x768
dpi=96
depth=24

ファイルを保存するには、Ctrl + Xを押し、保存するように求められたらYを入力してください。

VNCサーバーをテストします。

vncserver
/usr/bin/xauth:  file /home/vncuser/.Xauthority does not exist


New 'vncdesktop:1 (vncuser)' desktop at :1 on machine vncdesktop

Starting applications specified in /home/vncuser/.vnc/xstartup
Log file is /home/vncuser/.vnc/vncdesktop:1.log

Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/vncuser/.vnc/passwd :1 to connect to the VNC server.

現在のすべてのVNCセッションのリストは、次のコマンドを使用して取得できます。

vncserver -list
TigerVNC server sessions:

X DISPLAY #     RFB PORT #      PROCESS ID
:1              5901            1029

次に、次のステップではそれ用のサービスファイルを作成するため、プロセスを停止する必要があります。

vncserver -kill :1
Killing Xtigervnc process ID 1029... success!

ユーザーシェルを終了します。

exit

ステップ4 - VNC Systemd ユニットファイルを作成する

CentOS/Rocky Linux/AlmaLinux

TigerVNCのsystemdサービスユニットファイルは、/lib/systemd/systemディレクトリにあります。このファイルを/etc/systemd/systemディレクトリにコピーしてください。

sudo cp /lib/systemd/system/[email  /etc/systemd/system/vncserver@:1.service

VNCサーバーはデフォルトでポート5900で実行されます。すべてのユーザーは、自分のVNCサーバーインスタンスを別のポートで実行する必要があります。コマンドの最後にある番号:1は、VNCに5900のサブポートでサービスを実行するよう指示します。したがって、:1はポート5900に、:2はポート5902に対応します。

VNCはサービスを実行するためのポート番号を知っているだけでなく、どのユーザーがどのポート番号でサーバーを実行するかも指定する必要があります。これを設定するには、/etc/tigervnc/vncserver.usersファイルを編集します。編集のために開いてください。

sudo nano /etc/tigervnc/vncserver.users

値 :1=vncuser を # :2=andrew の直前に入力して、以下のようにしてください。

TigerVNC User assignment
#
This file assigns users to specific VNC display numbers.
The syntax is <display>=<username>. E.g.:
#
  :1=vncuser
:2=andrew
:3=lisa

ファイルを保存するには、Ctrl + Xを押し、保存するように求められたらYを入力してください。

Ubuntu/Debian

インストーラーはUbuntuまたはDebianシステムにsystemdサービスファイルをインストールしません。手動で作成する必要があります。TigerVNCのためのsystemdユニットファイルを作成して開いてください。

sudo nano /etc/systemd/system/[email 

そのコードをそこに貼り付けてください。

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

[Service]
Type=simple
User=vncuser
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

ファイルを保存するには、Ctrl + Xを押し、保存するように求められたらYを入力してください。

次のステップは、すべてのLinuxディストリビューションに共通しています。

サービスを有効にするためにsystemdデーモンを再読み込みしてください。

sudo systemctl daemon-reload

ステップ5 - VNCサーバーを開始する

CentOS/Rocky Linux/AlmaLinux

VNCサーバーサービスを開始します。

sudo systemctl start vncserver@:1

システムの再起動を通じてサービスを継続して実行できるようにしたい場合は、それを有効にすることができます。

sudo systemctl enable vncserver@:1

サービスの状態を確認してください。

sudo systemctl status vncserver@:1
? vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:1.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2022-03-16 01:16:18 UTC; 6s ago
  Process: 6777 ExecStart=/usr/libexec/vncsession-start :1 (code=exited, status=0/SUCCESS)
 Main PID: 6784 (vncsession)
    Tasks: 0 (limit: 11179)
   Memory: 1.1M
   CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service
           ? 6784 /usr/sbin/vncsession vncuser :1

Mar 16 01:16:18 guacamole systemd[1]: Starting Remote desktop service (VNC)...
Mar 16 01:16:18 guacamole systemd[1]: Started Remote desktop service (VNC).

Ubuntu/Debian

VNCサーバーサービスを開始します。

sudo systemctl start [email 

VNCサービスを有効にしてください。

sudo systemctl enable [email 

サービスの状態を確認してください。

sudo systemctl status [email 
? [email  - Remote desktop service (VNC)
     Loaded: loaded (/etc/systemd/system/[email ; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-03-19 09:42:28 UTC; 6s ago
    Process: 1420 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
   Main PID: 1455 (vncserver)
      Tasks: 0 (limit: 4686)
     Memory: 884.0K
     CGroup: /system.slice/system-vncserver.slice/[email 
             ? 1455 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg

Mar 19 09:42:28 vncdesktop systemd[1]: Starting Remote desktop service (VNC)...
Mar 19 09:42:28 vncdesktop systemd[1420]: pam_unix(login:session): session opened for user vncuser by (uid=0)
Mar 19 09:42:28 vncdesktop systemd[1]: Started Remote desktop service (VNC).
Mar 19 09:42:29 vncdesktop systemd[1455]: pam_unix(login:session): session opened for user vncuser by (uid=0)

ステップ6 - ファイアウォールを設定する

VNCをネットワーク越しにアクセス可能にするために、そのポートを開く必要があります。

CentOS/Rocky Linux/AlmaLinux

次のコマンドを実行してVNCポートを開き、ファイアウォールを再読み込みしてください。

sudo firewall-cmd --permanent --add-service=vnc-server
sudo firewall-cmd --reload

Ubuntu/Debian

sudo ufw allow 5901:5910/tcp
sudo ufw reload

ステップ7 - CentOS/Rocky Linux/AlmaLinuxサーバーへのVNC接続を作成する

GuacamoleのURLを開き、資格情報を入力してログインしてください。

Guacamole設定の接続タブに移動します。新しい接続ボタンをクリックします。

接続の名前を選択し、ドロップダウンメニューからVNCを選択してください。

パラメータセクションに、サーバーのIPアドレス(この場合は167.172.46.187)をホスト名として、5901をポートとして入力します。認証セクションには、VNCシステムのユーザー名とパスワードを入力してください。

追加の設定を有効にしたい場合は、それを行ってください。接続を追加するには、保存をクリックします。

VNCを使用してマシンにアクセスします

グアカモーレのダッシュボードにアクセスし、すべての接続セクションの下にあるVNC接続をクリックしてください。

サーバーのロック画面が表示されます。

それを無視して、VNCユーザー認証情報を入力してください。

解除ボタンを押して、サーバー/デスクトップのホームスクリーンに進んでください。

あなたのマシンで作業を始めることができます。

ステップ8 - リモートUbuntu/DebianサーバーへのVNC接続を作成する

もしあなたのGuacamoleのインストールとデスクトップ環境が同じサーバー上にあるなら、上記の手順を使用してサーバーVNCにアクセスすることができます。私たちのRocky Linuxのインストールは同じサーバー上にありましたが、Ubuntu環境は別のサーバー上にありました。そのような場合、より安全な方法であるため、SSHトンネリングを使用してサーバーへのVNC接続を作成します。

GuacamoleのURLを開き、資格情報を入力してログインしてください。

Guacamole設定の接続タブに移動します。新しい接続ボタンをクリックします。

接続の名前を選択し、ドロップダウンメニューからVNCを選択してください。

パラメータセクションの下に、ホスト名としてlocalhostアドレスを入力し、ポートには5001と入力します。認証セクションは空のままにしておきます。次のステップでそれを使用します。また、なぜlocalhostをホストとして使用したのかについても後ほど説明します。

追加の設定を有効にしたい場合は、それを行ってください。接続を追加するには、保存をクリックします。

SSHトンネルを作成する

Guacamoleをホストしているサーバーのターミナルから次のコマンドを実行してください。

ssh -L 5001:localhost:5901 [email 

ここで何が起こっているのか見てみましょう。上記のコマンドは、ローカルポートフォワーディングを使用して、あなたのシステムのSSH接続をリモートサーバーに転送します。

  • -L フラグはローカルポートフォワーディングを指定します。
  • ポート5001は、Guacamoleマシン上のリモートサーバーにアクセスするためのポートです。希望があれば別のポートを選ぶこともできます。
  • `localhost:5901` はリモートVNCサーバーで、接続するためのディスプレイ番号(およびそれに対応するポート番号)です。ローカルポートフォワーディングを行っているため、リモートサーバーアドレスは私たちのために `localhost` に変換されます。
  • 私たちの場合、[email はアクセスしているリモートのUbuntu/DebianサーバーのSSHユーザーとIPアドレスです。

SSHトンネルはコマンドが実行されている限りオープンのままです。トンネルを退出し、VNC接続を閉じるには、ターミナルでexitと入力してください。

VNCを使用してマシンにアクセスします

グアカモーレのダッシュボードにアクセスし、すべての接続セクションの下にあるVNC接続をクリックしてください。

VNCパスワードを設定するために vncpasswd コマンドを使用して作成したパスワードを要求するプロンプトが表示されます。パスワードを入力し、続行 を押して進んでください。

確認が成功すると、あなたのシステムのデスクトップ画面に移動します。

あなたのマシンで作業を始めることができます。

結論

これで、Apache Guacamoleを使用してLinuxサーバーとのVNC接続を作成するチュートリアルは終了です。質問がある場合は、下のコメントに投稿してください。

関連記事: