GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu20.04サーバーでApacheGuacamoleリモートデスクトップをセットアップする

このチュートリアルでは、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リモートデスクトップのセットアップに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、より多くのヒントやコツを入手してください。気をつけて🙂


Ubuntu
  1. Ubuntuリモートデスクトップ:セットアップして接続する方法

  2. Ubuntu 20.04 LTSにXrdp(リモートデスクトップ)をインストールする方法

  3. Ubuntuデスクトップ14.04をサーバーに変換しますか?

  1. UbuntuでApacheサーバーを起動、停止、または再起動する方法

  2. Ubuntu 20.04FocalFossa上のAnyDeskとのリモートデスクトップ共有

  3. Ubuntu 18.04にリモートデスクトップ(Xrdp)をインストールする方法

  1. Ubuntu 18.04にXrdpサーバー(リモートデスクトップ)をインストールする方法

  2. Ubuntu 20.04にXrdpサーバー(リモートデスクトップ)をインストールする方法

  3. Ubuntu20.04にApacheTomcat9サーバーをインストールします