Apache Guacamoleは、SSH、RDP、VNCなどのさまざまなプロトコルを使用してコンピューター/サーバーにリモート接続できる無料のオープンソースリモートデスクトップゲートウェイです。 Apache Guacamoleは、Apache Software Foundationによって保守されており、ApacheLicense2.0でライセンスされています。
Apache Guacamoleは、クライアントレスのリモートデスクトップゲートウェイです。いつでもどこからでもWebブラウザのみを使用してApacheGuacamoleにアクセスできます。 RDPを備えたWindows、VNCとSSHを備えたLinuxシステムなど、プロトコルが異なる複数のリモートオペレーティングシステムがある場合は、ApacheGuacamoleを使用することをお勧めします。
このチュートリアルでは、ApacheGuacamoleをDebian11Bullseyeにインストールして設定します。これには、いくつかのパッケージの依存関係とApache Tomcat 9のインストール、Guacamoleサーバーの構築、JavaアプリケーションであるGuacamoleWebアプリケーションのインストールが含まれます。最後に、NginxをGuacamole Webアプリケーションのリバースプロキシとして設定します。これにより、Webブラウザーがあれば、どこからでもサーバーにアクセスできます。
このチュートリアルを完了するには、次の要件が必要です。
- Debian11Bullseyeを実行している2GB以上のRAMを搭載したサーバー。
- root権限を持つ使用者または非rootユーザー。
- nanoエディターに関する基本的な知識。または、vimなどの好みのエディタを使用できます。
最初に、ApacheGuacamoleサーバーをビルドするためのいくつかのビルド依存関係をインストールします。これには、' libvncserver-devなどの基本的なパッケージが含まれます 'VNCプロトコルのサポートを有効にする'libssh2-1 'SSHプロトコルの場合、' freerdp2-dev 'RDPプロトコルの場合、および' libwebsockets-dev 'Kubernetesサポート用。
考慮のために、Telnetサポート用の「libtelnet-dev」はインストールしません。これは、telnetが古いプロトコルと見なされており、安全ではないためです。
1.次に、以下のaptコマンドを実行してパッケージリストを更新します。
sudo apt update
2.その後、次のコマンドを実行して、ApacheGuacamoleサーバーを構築するための依存関係をインストールします。
sudo apt install -y freerdp2-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libcairo2-dev libjpeg62-turbo-dev libjpeg-dev libpng-dev libtool-bin libpango1.0-dev libpango1.0-0 libssh2-1 libwebsockets16 libwebsocketpp-dev libossp-uuid-dev libssl-dev libwebp-dev libvorbis-dev libpulse-dev libwebsockets-dev libvncserver-dev libssh2-1-dev openssl
サーバーのインターネット接続によっては、このコマンドが完了するまでに時間がかかる場合があります。
ApacheTomcat9のインストール
ビルドの依存関係をインストールした後、Apache Tomcat 9をインストールします。このパッケージは、Javaで記述されたWebアプリケーションであるGuacamoleWebアプリケーションに必要です。
1.次のコマンドを実行して、ApacheTomcat9をシステムにインストールします。
sudo apt install -y tomcat9 tomcat9-admin tomcat9-common tomcat9-user
2. Apache Tomcat 9をインストールした後、以下のコマンドを実行して、ApacheTomcatサービスを開始して有効にします。 Debianベースのシステムでは、ApacheTomcat9には「tomcat9」というサービスが付属しています。 '。
sudo systemctl enable --now tomcat9
3.ここで、すべてが正常に見える場合は、「 tomcat9」のステータスを確認します。 '以下のコマンドを実行してサービスを提供します。
sudo systemctl status tomcat9
次の出力が表示されます。 ' tomcat9を確認してください 'サービスは'アクティブ(実行中) '。
Guacamole-serverのコンパイル
このセクションでは、Guacamoleサーバーをダウンロードしてコンパイルします。これはApacheGuacamoleの主要コンポーネントであり、リモートサーバーおよびデスクトップに接続するためのライブラリが含まれています。 Guacamoleサーバーには、Cライブラリ「libguacd」とサポートされているプロトコルのすべてのライブラリ、およびGuacamoleの心臓部であるguacdが含まれています。
guacdは、guacamole Webアプリケーションからトンネリングされたすべてのクライアント接続を処理し、それらに代わってリモートサーバーとデスクトップに接続します。 Guacamoleサーバーを構築してコンパイルすることにより、システムに新しいサービス「guacd」が追加されます。
1.作業ディレクトリを'/ usr / srcに移動することから始めます。 '。ものをビルドおよびコンパイルするためのすべてのソースコードは、このディレクトリに移動します。
cd /usr/src
2.次に、以下のwgetコマンドを実行して、Guacamoleサーバーのソースコードをダウンロードします。必ずGuacamoleダウンロードページを確認し、Guacamoleサーバーの最新バージョンをコピーしてください。この記事の執筆時点では、最新バージョンは1.3.0です。
wget https://dlcdn.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz
3.次に、ソースコードを抽出すると、新しいディレクトリ' guacamole-server-VERSION-NUMBER'が取得されます。 。そのディレクトリに移動します。
tar -xzvf guacamole-server-1.3.0.tar.gz
cd guacamole-server-*/
4.次に、Guacamoleサーバーを構築するためのすべてのシステム要件を確認し、次のコマンドを実行して環境をセットアップします。オプション'--with-systemd-dir=/ etc / systemd / system /' systemdサービスファイルを設定するために使用されます。このファイルは、ディレクトリ' / etc / systemd / system /にあります。 '。
./configure --with-systemd-dir=/etc/systemd/system/
次のような出力が表示されます:
------------------------------------------------
guacamole-server version 1.3.0
------------------------------------------------
Library status:
freerdp2 ............ yes
pango ............... yes
libavcodec .......... yes
libavformat.......... yes
libavutil ........... yes
libssh2 ............. yes
libssl .............. yes
libswscale .......... yes
libtelnet ........... no
libVNCServer ........ yes
libvorbis ........... yes
libpulse ............ yes
libwebsockets ....... yes
libwebp ............. yes
wsock32 ............. no
Protocol support:
Kubernetes .... yes
RDP ........... yes
SSH ........... yes
Telnet ........ no
VNC ........... yes
Services / tools:
guacd ...... yes
guacenc .... yes
guaclog .... yes
FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
Init scripts: no
Systemd units: /etc/systemd/system/
Type "make" to compile guacamole-server.
'ライブラリのステータスをご覧ください 'および'プロトコルサポート 'セクション。追加の依存関係とライブラリをインストールすることで、プロトコルサポートを調整できます。
5.次に、以下のコマンドを実行して、Guacamoleサーバーをコンパイルしてインストールします。
make
make install
コンパイルとインストールのプロセスが完了するまでに時間がかかる場合があります。
6.ここで、すべてが完了したら、次のコマンドを実行して、すべての新しいシステムライブラリを適用します。
sudo ldconfig
このセクションでは、Guacamole-serverパッケージをインストールしました。次に、Guacamoleサーバーに必要な構成をいくつか作成します。
Guacamole-Serverのセットアップ
Guacamole-serverを機能させるには、構成ディレクトリ' / etc / guacamole /を作成します。 '、次に新しいファイルを作成します' guacamole.properties 'デフォルトのGuacamole-server構成として、ファイル' logback.xml' Guacamoleロギングシステムの場合、ファイル' user-mapping.xml' Guacamoleユーザーの認証とリモートサーバーおよびデスクトップへの接続を定義するため。
1.開始するには、次のコマンドを実行して新しいディレクトリを作成します' / etc / guacamole / '追加のディレクトリ内'拡張機能 'および'lib' 中身。次に、環境変数' GUACAMOLE_HOME =/ etc / guacamoleを追加します。 'ファイル'/etc / default/tomcat9'に。これにより、Tomcat9サーブレットコンテナに' GUACAMOLE_HOMEを検索するように指示されます。 'ディレクトリから'/etc / guacamole / '。
mkdir -p /etc/guacamole/{extensions,lib}
echo 'GUACAMOLE_HOME=/etc/guacamole' >> /etc/default/tomcat9
2.次に、メイン構成を作成します' guacamole.properties 'nanoまたはお好みのエディタを使用します。
sudo nano /etc/guacamole/guacamole.properties
次の構成を入力します:
# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port: 4822
# user mapping and user connections
user-mapping: /etc/guacamole/user-mapping.xml
- オプション'guacd-hostname'は、guacdサービスが実行されるホスト名またはIPアドレスを定義します。このチュートリアルでは、ローカルホストを使用してguacdサービスを実行します。
- オプション'guacd-port 'guacdサービスのデフォルトポートを定義します。このチュートリアルでは、ポート' 4822を使用します 'guacdサービスの場合。
- オプション「user-mapping」は、ユーザー認証用のファイル構成と使用可能な接続のリストを定義します。このチュートリアルでは、ファイル'/etc/guacamole/user-mapping.xml'を使用します。 Guacamoleサーバーのユーザーと接続を定義します。別の認証方法を使用することをお勧めします。Guacamoleのドキュメントを確認してください。
ファイルを保存して閉じます。
3.次に、新しい構成を作成します' loogback.xml 'ロギングとデバッグ用。デフォルトでは、Guacamoleはコンソールにのみログを記録します。この構成を使用すると、Guacamoleはログバックログフレームワークを介してログに記録できます。
sudo nano /etc/guacamole/logback.xml
次の構成行を追加します。
<configuration>
<!-- Appender for debugging -->
<appender name="GUAC-DEBUG" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- Log at DEBUG level -->
<root level="debug">
<appender-ref ref="GUAC-DEBUG"/>
</root>
</configuration>
構成ファイルを保存して閉じます。
4.次に、新しいmd5パスワードハッシュを生成し、Guacamoleユーザー認証と接続用の新しいファイルを作成します。
次のコマンドを実行して、md5パスワードハッシュを生成します。また、必ず強力なパスワードでパスワードを変更してください。
echo -n StrongPasswordUserJohnDoe | openssl md5
mod5ハッシュパスワードの出力を受け取ります。メモにコピーします。
(stdin)= aca22211ffcfb8aa8ad7627195ad4fce
5.その後、新しいファイル' user-mapping.xmlを作成します 'nanoエディターを使用します。
sudo nano /etc/guacamole/user-mapping.xml
以下の構成を入力してください。また、必ず「ユーザー名」と「パスワード」を変更してください。 '。また、'
<user-mapping>
<!-- Another user, but using md5 to hash the password
(example below uses the md5 hash of "PASSWORD") -->
<authorize
username="johndoe"
password="aca22211ffcfb8aa8ad7627195ad4fce"
encoding="md5">
<!-- First authorized connection -->
<connection name="SSH localhost">
<protocol>ssh</protocol>
<param name="hostname">localhost</param>
<param name="port">22</param>
<param name="username">johndoe</param>
<param name="password">SSHPASSWORD</param>
</connection>
<!-- Second authorized connection -->
<connection name="localhost">
<protocol>vnc</protocol>
<param name="hostname">localhost</param>
<param name="port">5901</param>
<param name="password">VNCPASS</param>
</connection>
<!-- Third authorized connection -->
<connection name="otherhost">
<protocol>vnc</protocol>
<param name="hostname">otherhost</param>
<param name="port">5900</param>
<param name="password">VNCPASS</param>
</connection>
</authorize>
</user-mapping>
ファイルを保存して閉じます。
これで、Guacamoleサーバーの構成が完了しました。次に、Guacamole Webアプリケーションをインストールして構成します。これは、ブラウザーに表示されるWebアプリケーションです。
GuacamoleクライアントWebアプリケーションのインストール
このセクションでは、GuacamoleWebアプリケーションをシステムにインストールします。これは、Guacamole Webアプリケーションのコンパイル済みバイナリファイルをダウンロードし、Tomcatの「webaps」ディレクトリにデプロイすることで実行できます。
1.作業ディレクトリを'/ usr / src'に移動します コンパイルされたGuacamoleWebアプリケーション'.warをダウンロードします。 'wgetコマンドを使用します。必ずGuacamoleダウンロードページにアクセスし、最新バージョンのGuacamoleWebアプリケーションのリンクをコピーしてください。
cd /usr/src
wget https://dlcdn.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war
2.次に、Javaバイナリアプリケーション' guacamole-VERSION.warをデプロイします。 'Tomcatディレクトリへ'/ var / lib / tomcat9 / webapps /' 次のコマンドを実行します。これにより、ApacheTomcatサーブレットコンテナを介してGuacamoleWebアプリケーションにアクセスできるようになります。
sudo cp guacamole-1.3.0.war /var/lib/tomcat9/webapps/guacamole.war
3.その後、Tomcat 9サービスを再起動して、新しいWebアプリケーションを適用します。
sudo systemctl restart tomcat9
4.次に、' guacdを開始して有効にします '以下のコマンドを実行してサービスを提供します。
sudo systemctl enable --now guacd
次に、次のコマンドを使用して確認します。
sudo systemctl status guacd
以下のスクリーンショットのような出力が表示されます。
この時点で、Guacamoleサーバーアプリケーション(バックエンド)とGuacamole Webアプリケーション(フロントエンド)のインストールが完了しました。次に、NginxをGuacamoleWebアプリケーションのリバースプロキシとして設定します。
このセクションでは、Nginx Webサーバーをインストールし、GuacamoleWebアプリケーションのリバースプロキシとして構成します。これにより、Guacamole Webアプリケーションのドメイン名を設定し、SSL証明書で保護することができます。
1.開始するには、次の' aptを実行します 'Nginxパッケージをインストールするコマンド。
sudo apt install nginx -y
2.すべてのNginxパッケージがインストールされたら、ディレクトリ' / etc / nginx / sites-availableに新しい仮想ホストファイル'guacamole'を作成します。 '。 Guacamoleリバースプロキシに関連するすべての構成がこのファイルに保存されます。
sudo nano /etc/nginx/sites-available/guacamole
次の設定を入力してください。また、SSL証明書のドメイン名とパスを必ず変更してください。この例では、ドメイン' example.io'を使用しています。 SSL秘密鍵を使用する'privkey.pem 'および公開鍵'fullchain.pem '、およびディレクトリで利用可能なボット証明書'/etc/letsencrypt/live/exmaple.io/'。
server {
listen 80;
server_name example.io;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443 ssl http2;
server_name example.io;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
ssl_certificate /etc/letsencrypt/live/example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.io/privkey.pem;
access_log /var/log/nginx/guacamole-access.log;
error_log /var/log/nginx/guacamole-error.log;
location /guacamole/ {
proxy_pass http://127.0.0.1:8080/guacamole/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
access_log off;
}
}
ファイルを保存して閉じます。
3.次に、仮想ホストファイル' guacamoleをアクティブ化します。 'ディレクトリへの新しいシンボリックリンクを作成する'/ etc / nginx / sites-enabled / '。次に、すべてのNginx構成を確認して、構文エラーがあるかどうかを確認します。
sudo ln -s /etc/nginx/sites-available/guacamole /etc/nginx/sites-enabled/
sudo nginx -t
出力を受け取ります'Syntax OK '、これは構成にエラーがないことを意味します。
4.次に、Nginxサービスを再起動して新しい構成を適用し、次のコマンドを実行してそのステータスを確認します。
sudo systemctl restart nginx
sudo systemtl status nginx
以下のスクリーンショットのような出力が表示されます。 Nginxサービスは'アクティブ(実行中) '。
5.さらに、Guacamole Webアプリケーションを別のサブURLにデプロイする場合は、オプション' location / guacamole / {...} を変更します。 '新しいパスへ'location / new-path / {...} 'そしてオプション'proxy_cookie_path を追加します '以下のように新しいパスに移動します。
location /new-path/ {
proxy_pass http://127.0.0.1:8080/guacamole/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_cookie_path /guacamole/ /new-path/;
access_log off;
}
このセクションでは、GuacamoleWebアプリケーションのリバースプロキシとしてのNginxのインストールと構成を完了しました。この時点で、Apache Guacamoleのインストールが完了し、ドメイン名からアクセスできます。
ApacheGuacamoleのインストールを確認する
このセクションでは、ApacheGuacamoleのインストールを確認します。
まず、Webブラウザを開き、Guacamoleインストールのドメイン名をデフォルトのパス' / guacamole'で入力します。 。
https://example.io/guacamole/
これで、以下のGuacamoleログインページが表示されます。ファイル'user-mapping.xml'で構成したユーザー名とパスワードを入力します 、[ログイン]ボタンをクリックします。
ログインすると、ユーザーに定義されている接続のリストが表示されます。
接続名をクリックして、ターゲットサーバーに接続します。この例では、SSHプロトコルを使用してローカルサーバーに接続します。
これで、サーバーに新しいsshターミナルセッションが表示されます。
おめでとうございます!このチュートリアルでは、Debian11BullseyeにApacheGuacamoleをインストールする方法を学びました。また、構成ファイル' user-mapping.xmlを使用してユーザー認証と接続を設定する方法を学習しました。 'そして、NginxをGuacamole Webアプリケーションのリバースプロキシとして設定します。これにより、ドメイン名を使用してGuacamaloeを実行し、SSL証明書を使用して保護することができます。