このチュートリアルでは、Ubuntu20.04サーバーでGuacamoleリモートデスクトップをセットアップする方法を説明します。 Guacamoleは、Apacheソフトウェアファウンデーションによって開発された無料のオープンソースリモートデスクトップゲートウェイです。
ワカモレの機能
- Webブラウザからリモートデスクトップにアクセスできます。クライアント側に他のソフトウェアをインストールする必要はありません。
- VNC、RDP、SSH、Kubernetesなどの標準プロトコルをサポートします。
- VNCセッションはグラフィカルに記録できます。
- CAS、OpenID Connect、またはSAML2.0を使用したシングルサインオン
- Wake-on-LAN
- 複数のリモートデスクトップセッションを簡単に管理できます。
- TOTP2要素認証をサポートします。
- クリップボード(コピーアンドペースト)とSFTPを介したファイル転送をサポートします。
- オーディオの入出力をサポートします
- その他
Guacamole自体はリモートデスクトッププロトコルではありません。これはリモートデスクトップとクライアント間のプロキシであるため、リモートデスクトップをWebブラウザで表示および制御できます。
ステップ1:ソースからGuacamoleサーバーを構築する
Ubuntu 20.04サーバーにログインし、依存関係パッケージをインストールします。
sudo apt update sudo apt install build-essential libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev libvncserver-dev freerdp2-dev libssh2-1-dev libtelnet-dev libwebsockets-dev libpulse-dev libvorbis-dev libwebp-dev libssl-dev libpango1.0-dev libswscale-dev libavcodec-dev libavutil-dev libavformat-dev
guacamole-serverの最新の安定バージョンをダウンロードします。
wget http://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz
アーカイブを抽出します。
tar -xvf guacamole-server-1.2.0.tar.gz
抽出したディレクトリに移動します。
cd guacamole-server-1.2.0
ビルド環境を構成します。
./configure --with-init-dir=/etc/init.d
次に、guacamole-serverをコンパイルします。
sudo make
guacamole-serverをインストールします。
sudo make install
インストールされているライブラリのシステムのキャッシュを更新します。
sudo ldconfig
systemdをリロードして、guacd
を見つけられるようにします (Guacamoleプロキシデーモン)/etc/init.d/
にインストールされているサービス ディレクトリ。
sudo systemctl daemon-reload
guacd
を開始します サービス。
sudo systemctl start guacd
起動時に自動起動を有効にします。
sudo systemctl enable guacd
ステータスを確認してください。
systemctl status guacd
ご覧のとおり、アクティブ(実行中) 。
Guacdは127.0.0.1:4822
をリッスンします 、ss
で表示できるように ユーティリティ。
sudo ss -lnpt | grep guacd
ステップ2:GuacamoleWebアプリケーションをインストールする
Guacamole WebアプリケーションはJavaで記述されているため、ApacheTomcatのようなJavaサーブレットコンテナをインストールする必要があります。
sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user
Apache Tomcatは、次のように表示されるように、ポート8080でリッスンします。
sudo ss -lnpt | grep java
ポート8080でリッスンする他のソフトウェアがある場合、Tomcatはポート8080にバインドできません。別のポートを使用するように他のプロセスを構成してから、Tomcatを再起動する必要があります(sudo systemctl restart tomcat9
。
次に、GuacamoleWebアプリケーションをダウンロードします。
wget https://downloads.apache.org/guacamole/1.2.0/binary/guacamole-1.2.0.war
ファイルをWebアプリケーションディレクトリ(/var/lib/tomcat9/webapps
)に移動します )同時にファイルの名前を変更します(バージョン番号を削除します)。
sudo mv guacamole-1.2.0.war /var/lib/tomcat9/webapps/guacamole.war
Tomcatを再起動してguacdします。
sudo systemctl restart tomcat9 guacd
ステップ3:ワカモレを構成する
Guacamoleの構成ディレクトリを作成します。
sudo mkdir /etc/guacamole/
構成ファイルを作成します。
sudo nano /etc/guacamole/guacamole.properties
このファイルに次の行を追加します。これらの行はデフォルト値であるため、追加する必要はないと言う人もいるかもしれません。基本的な構成を示しますので、必要に応じてカスタマイズできます。
# Hostname and port of guacamole proxy guacd-hostname: localhost guacd-port: 4822 # Auth provider class (authenticates user/pass combination, needed if using the provided login screen) auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider basic-user-mapping: /etc/guacamole/user-mapping.xml
ファイルを保存して閉じます。 Guacamoleのデフォルトの認証モジュールは、XMLファイルからユーザー名とパスワードを読み取ります:/etc/guacamole/user-mapping.xml
。このファイルを作成する前に、次のコマンドを使用してパスワードのMD5ハッシュを生成する必要があります。 your_password
を置き換えます ご希望のパスワードを使用してください。
echo -n your_password | openssl md5
サンプル出力:
(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517
次に、ユーザーマッピングXMLファイルを作成します。
sudo nano /etc/guacamole/user-mapping.xml
次の行を追加します。ここでは、バックエンドがVNC(Vritual Network Computing)プロトコルを使用することを指定します。ユーザー名とパスワードのハッシュを置き換えます。後でVNCパスワードを作成します。
<user-mapping> <!-- Per-user authentication and config information --> <authorize username="your_preferred_username" password="1060b7b46a3bd36b3a0d66e0127d0517" encoding="md5"> <connection name="default"> <protocol>vnc</protocol> <param name="hostname">localhost</param> <param name="port">5901</param> <param name="password">vnc_password</param> </connection> </authorize> </user-mapping>
ファイルを保存して閉じます。 Tomcatを再起動してguacdします。
sudo systemctl restart tomcat9 guacd
ステップ4:Ubuntu20.04サーバーにデスクトップ環境をインストールする
リモートデスクトップをセットアップするため、デスクトップ環境が必要です。デスクトップ環境をインストールする前に、サーバーに十分なRAMがあることを確認してください。多くのデスクトップ環境があります。軽量のXFCEデスクトップ環境はVNCでうまく機能することがわかったので、次のコマンドを使用してインストールします。
sudo apt install xfce4 xfce4-goodies firefox
インストール中に、デフォルトのディスプレイマネージャを選択するように求められる場合があります。 VNCセッションではログイン画面が表示されないため、この選択はそれほど重要ではありません。
サーバー上でデスクトップ環境が実行されているため、UFWなどのファイアウォールを使用してアクセスを制限し、必要なポートのみを公開することを強くお勧めします。次のチュートリアルを読んで、UbuntuでUFWを有効にして使用する方法を学ぶことができます。
- Debian、Ubuntu、LinuxMintでUFWファイアウォールを使用する方法
ステップ5:Ubuntu20.04サーバーにVNCサーバーをインストールする
Linuxユーザーが利用できるVNCサーバーソフトウェアはいくつかあります。ワカモレで最適に動作するTigerVNCサーバーを使用します。
sudo apt install tigervnc-standalone-server
次のコマンドを実行して、VNCサーバーを起動します。
vncserver
TigerVNCが最初に起動すると、VNCパスワードを設定するように求められます。パスワードは8文字を超えてはならないことに注意してください。次に、表示専用のパスワードが必要かどうかを選択できます。
次に、/etc/guacamole/user-mapping.xml
を編集する必要があります。 ファイルを作成し、VNCパスワードを変更します。次に、Tomcatを再起動してguacdします。
sudo systemctl restart tomcat9 guacd
vncserver
コマンドは、ホームディレクトリの下に2つのファイルを作成します。
- 〜/ .Xauthrirty
- 〜/ .vnc / xstartup
xstartupファイルは、TigerVNCサーバーによって起動されるアプリケーションを指定します。このファイルを編集します。
nano ~/.vnc/xstartup
変更
#!/bin/sh
に
#!/bin/bash
BashはLinuxの標準シェルだからです。次に、次の行をコメントアウトします。 (#
を追加します 各行の先頭にある文字)。
xsetroot -solid grey export XKL_XMODMAP_DISABLE=1 /etc/X11/Xsession
次に、下部に次の行を追加します。これにより、TigerVNCサーバーがLXQTデスクトップ環境を起動します。 startxfce4
バイナリはxfce4-session
によってインストールされます パッケージ。
startxfce4 &
ファイルを保存して閉じます。
トラブルシューティング
tigerVNCサーバーが~/.vnc/xstartup
を作成しなかった場合 ファイルとVNCサーバーが次のように失敗しました:
次に、ファイルを手動で作成できます。
nano ~/.vnc/xstartup
ファイルに次の行を追加します。
#!/bin/sh xrdb $HOME/.Xresources startxfce4 &
ファイルを保存して閉じます。
Systemdサービスの作成
TigerVNCサーバーには、systemdサービスユニットは付属していません。起動時に開始するには、systemdサービスユニットを作成する必要があります。
sudo nano /etc/systemd/system/[email protected]
ファイルに次の行を追加します。ユーザー名を実際のユーザー名に置き換えます。
[Unit] Description=a wrapper to launch an X server for VNC After=syslog.target network.target [Service] Type=forking User=username Group=username WorkingDirectory=/home/username ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target
ファイルを保存して閉じます。現在のVNCサーバーインスタンスを停止します。
vncserver -kill :1
systemdでVNCサーバーを起動します。
sudo systemctl start [email protected]
起動時に自動起動を有効にします。
sudo systemctl enable [email protected]
ステータスを確認してください:
systemctl status [email protected]
ご覧のとおり、アクティブ(実行中)です。
これで、TigerVNCサーバーはポート5901でリッスンします。
sudo ss -lnpt | grep vnc
ステップ6:GuacamoleWebアプリケーションのリバースプロキシを設定する
Apache Tomcatはポート8080でリッスンしています。GuacamoleWebアプリケーションに簡単にアクセスする方法を提供するために、ApacheまたはNginxでリバースプロキシを設定して、エンドユーザーがドメイン名を使用してWebアプリケーションにアクセスできるようにします。また、TLS証明書を簡単にインストールして接続を暗号化することもできます。
Apache
Apacheを使用する場合は、デフォルトのUbuntuソフトウェアリポジトリからApacheをインストールします。
sudo apt install apache2
Apacheをリバースプロキシとして使用するには、proxy
を有効にする必要があります モジュールとヘッダーモジュール。
sudo a2enmod proxy proxy_http headers proxy_wstunnel
次に、Guacamoleの仮想ホストファイルを作成します。
sudo nano /etc/apache2/sites-available/guacamole.conf
ファイルに次の行を追加します。 guacamole.example.com
を置き換えます あなた自身のドメイン名で。 DNSマネージャーでサブドメインのAレコードを作成することを忘れないでください。実際のドメイン名をお持ちでない場合は、NameCheapにアクセスして購入することをお勧めします。価格は安く、whoisのプライバシー保護は一生無料です。
<VirtualHost *:80> ServerName guacamole.example.com ErrorLog ${APACHE_LOG_DIR}/guacamole_error.log CustomLog ${APACHE_LOG_DIR}/guacamole_access.log combined <Location /> Require all granted ProxyPass http://localhost:8080/guacamole/ flushpackets=on ProxyPassReverse http://localhost:8080/guacamole/ </Location> <Location /websocket-tunnel> Require all granted ProxyPass ws://localhost:8080/guacamole/websocket-tunnel ProxyPassReverse ws://localhost:8080/guacamole/websocket-tunnel </Location> Header always unset X-Frame-Options </VirtualHost>
ファイルを保存して閉じます。構文をテストします。
sudo apachectl -t
Syntxに問題がない場合は、この仮想ホストを有効にします。
sudo a2ensite guacamole.conf
Apacheを再起動します
sudo systemctl restart apache2
これで、guacamole.example.com
からApacheGuacamoleログインページにアクセスできます。 。 「無効なリクエスト」または同様のエラーメッセージが表示された場合は、Apache Tomcatがポート8080にバインドできないことを意味している可能性があります。これは、このポートがサーバー上の別のプロセスによってすでに使用されているためです。別のポートを使用するように他のプロセスを構成してから、Tomcatを再起動する必要があります。
Nginx
Nginxを使用する場合は、デフォルトのUbuntuソフトウェアリポジトリからNginxをインストールします。
sudo apt install nginx
Guacamoleのサーバーブロックファイルを作成します。
sudo nano /etc/nginx/conf.d/guacamole.conf
ファイルに次の行を追加します。 guacamole.example.com
を置き換えます あなた自身のドメイン名で。 DNSマネージャーでサブドメインのAレコードを作成することを忘れないでください。実際のドメイン名をお持ちでない場合は、NameCheapにアクセスして購入することをお勧めします。価格は安く、whoisのプライバシー保護は一生無料です。
server { listen 80; listen [::]:80; server_name guacamole.example.com; access_log /var/log/nginx/guac_access.log; error_log /var/log/nginx/guac_error.log; location / { 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/ /; } }
このファイルを保存して閉じます。次に、Nginx構成をテストします。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
これで、guacamole.example.com
からApacheGuacamoleログインページにアクセスできます。 。 「無効なリクエスト」または同様のエラーメッセージが表示された場合は、Apache Tomcatがポート8080にバインドできないことを意味している可能性があります。これは、このポートがサーバー上の別のプロセスによってすでに使用されているためです。別のポートを使用するように他のプロセスを構成してから、Tomcatを再起動する必要があります。
HTTPSを有効にする
Guacamole WebインターフェースにアクセスしたときにHTTPトラフィックを暗号化するために、Let’sEncryptから発行された無料のTLS証明書をインストールしてHTTPSを有効にすることができます。次のコマンドを実行して、Let’s Encryptクライアント(certbot)をUbuntu20.04にインストールします。
sudo apt install certbot
Apacheを使用する場合は、CertbotApacheプラグインをインストールする必要があります。
sudo apt install python3-certbot-apache
次に、次のコマンドを実行してTLS証明書を取得してインストールします。
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
Nginxを使用する場合は、CertbotNginxプラグインもインストールする必要があります。
sudo apt install python3-certbot-nginx
次に、次のコマンドを実行してTLS証明書を取得してインストールします。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
場所:
-
--nginx
:nginxプラグインを使用してください。 -
--apache
:Apacheプラグインを使用してください。 -
--agree-tos
:利用規約に同意します。 --redirect
:301リダイレクトでHTTPSを強制します。-
--hsts
:すべてのHTTP応答にStrict-Transport-Securityヘッダーを追加します。ドメインに常にTLSを使用するようにブラウザを強制します。 SSL/TLSストリッピングから防御します。 -
--staple-ocsp
:OCSPステープリングを有効にします。有効なOCSP応答は、TLS中にサーバーが提供する証明書にホチキス止めされます。
これで、証明書が取得され、自動的にインストールされます。
また、HTTPS経由でGuacamoleWebインターフェースにアクセスできます。 (https://guacamole.example.com)。
ログインすると、リモートデスクトップを使用できるようになります。
まとめ
このチュートリアルが、Ubuntu20.04サーバーでのApacheGuacamoleリモートデスクトップのセットアップに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、より多くのヒントやコツを入手してください。気をつけて🙂