INDEX
Apache Guacamole on Windows Subsystem for Linux
Apache Guacamole を Windows Subsystem for Linux で動かして、自身のRDP接続をウェブブラウザからアクセスする。
Windows 10 ver.2004 以降で、KB5004296 が適用済みの環境(これ以前・未適用の場合は、WSLの有効化・Microsoft Store からのディストリビューションのインストールが必要になる)。
ただ、WSL2 は、アイドル状態になると自動的に停止されてしまう。そのため、動かしたままにするために Windows にログインした状態で、WSLのターミナルを開いた状態にしておく必要がある(何かしらのサービスを再起動させればよい というのも見かけたけど、試した限りでは止まってしまう)。
- Apache Guacamole
- GitHub - MysticRyuujin/guac-install: Script for installing Guacamole on Ubuntu
Apache Guacamole の構築
Ubuntu on WSL2 のインストール
管理者でコマンドプロンプトを開き、wsl コマンドで作業する。
--list --online で利用可能なディストリビューションが確認でき、 --install でインストールする。-d オプションで、ディストリビューションを指定する。デフォルトは Ubuntu なので、指定なしでも Ubuntu になる。
C:\> wsl --list --online インストールできる有効なディストリビューションの一覧を次に示します。 既定の分布は ' * ' で表されます。 'wsl --install -d <Distro>'を使用してインストールします。 NAME FRIENDLY NAME * Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling SLES-12 SUSE Linux Enterprise Server v12 SLES-15 SUSE Linux Enterprise Server v15 Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS OracleLinux_8_5 Oracle Linux 8.5 OracleLinux_7_9 Oracle Linux 7.9 C:\> C:\> wsl --install -d Ubuntu インストール中: 仮想マシン プラットフォーム 仮想マシン プラットフォーム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 インストール中: Ubuntu Ubuntu はインストールされました。 要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。 C:\> C:\> shutdown /r /t 0
再起動すると、Ubuntu のコンソールが表示され、Ubuntu 用のユーザ作成が求められる。ディストリビューションごとの既定のユーザとなり、Linux 管理者と見なされ sudo コマンドが実行できる。ちなみに、インストールする Linux ディストリビューションごとに固有で、Windows のユーザとは関係ない。
Installing, this may take a few minutes... Please create a default UNIX user account. The username does not need to match your Windows username. For more information visit: https://aka.ms/wslusers Enter new UNIX username:
Enter new UNIX username: username New password: Retype new password: passwd: password updated successfully Installation successful! To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.79.1-microsoft-standard-WSL2 x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage This message is shown once a day. To disable it please create the /home/username/.hushlogin file. username@hostname:~$
- WSL 開発環境を設定する | Microsoft Learn
systemctl を利用する
Ubuntu 22.04 で、systemctl コマンドを実行しようとすると、下記のようなエラーメッセージが表示される。
$ sudo systemctl System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down $
Ubuntu で、/etc/wsl.conf に下記の内容を記載して、WSL を再起動する。
[boot] systemd=true
- Systemd support is now available in WSL! - Windows Command Line
コマンド
$ ls -l /etc/wsl.conf -rw-r--r-- 1 root root 21 Jan 22 12:38 /etc/wsl.conf $ cat /etc/wsl.conf [boot] systemd=true $
C:\> wsl.exe --shutdown
$ ps -ae
PID TTY TIME CMD
1 ? 00:00:00 systemd
2 ? 00:00:00 init
:中略
$ systemctl list-unit-files --type=service
UNIT FILE STATE VENDOR PRESET
apparmor.service enabled enabled
apport-autoreport.service static -
:中略
$
Apache Guacamole のインストール
GitHub - MysticRyuujin/guac-install: Script for installing Guacamole on Ubuntu インストールスクリプトを利用する。
$ wget https://git.io/fxZq5 -O guac-install.sh --2023-01-22 13:10:51-- https://git.io/fxZq5 Resolving git.io (git.io)... 140.82.114.22 Connecting to git.io (git.io)|140.82.114.22|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://raw.githubusercontent.com/MysticRyuujin/guac-install/master/guac-install.sh [following] --2023-01-22 13:10:52-- https://raw.githubusercontent.com/MysticRyuujin/guac-install/master/guac-install.sh Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.111.133, ... Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 24966 (24K) [text/plain] Saving to: ‘guac-install.sh’ guac-install.sh 100%[========================================>] 24.38K --.-KB/s in 0.001s 2023-01-22 13:10:52 (39.5 MB/s) - ‘guac-install.sh’ saved [24966/24966] $ chmod +x guac-install.sh $ ls -l guac-install.sh -rwxr-xr-x 1 username username 24966 Jan 22 13:10 guac-install.sh $
取得したインストールスクリプトを実行する。
必要なことは対話形式で聞いてくるが、オプションで指定して実行する。MFA(多要素認証)を使用しない ( -o | --nomfa )、MySQL をインストールする ( -i | --installmysql )。また、MySQL と Guacamole のパスワードを指定する ( -r | --mysqlpwd と -gp | --guacpwd )。
さらに、systemctl コマンドが使えない状態だと、Tomcat, MySQL の制御(再起動)に失敗して、インストールに失敗する。
$ sudo ./guac-install.sh --nomfa --installmysql --mysqlpwd <MySQLのパスワード> --guacpwd <Guacamoleのパスワード> Read MySQL root's password from command line argument Read MySQL guacamole_user's password from command line argument Adding component(s) 'universe' to all repositories. Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB] Get:3 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB] Get:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB] Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [831 kB] Get:6 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [566 kB] Get:7 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [785 kB] Fetched 2507 kB in 4s (645 kB/s) Reading package lists... Done Updating apt... Found libmariadb-java package (known issues). Will download libmysql-java 8.0.27 and install manually Found tomcat9 package... Installing packages. This might take a few minutes... OK Downloading files... guacamole-server-1.4.0.tar 100%[========================================>] 1.05M --.-KB/s in 0.03s Downloaded guacamole-server-1.4.0.tar.gz guacamole-1.4.0.war 100%[========================================>] 12.41M 57.3MB/s in 0.2s Downloaded guacamole-1.4.0.war guacamole-auth-jdbc-1.4.0. 100%[========================================>] 15.72M 59.5MB/s in 0.3s Downloaded guacamole-auth-jdbc-1.4.0.tar.gz mysql-connector-java-8.0.2 100%[========================================>] 4.02M 5.91MB/s in 0.7s Downloaded mysql-connector-java-8.0.27.tar.gz Downloading complete. Building Guacamole-Server with GCC 11.3.0 Configuring Guacamole-Server. This might take a minute... OK Running Make on Guacamole-Server. This might take a few minutes... OK Running Make Install on Guacamole-Server... OK Moving mysql-connector-java-8.0.27.jar (/etc/guacamole/lib/mysql-connector-java.jar)... Restarting Tomcat service & enable at boot... OK Restarting MySQL service & enable at boot... OK Synchronizing state of mysql.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable mysql Setting timezone as Asia/Tokyo Checking MySQL for existing database (guacamole_db) OK Checking MySQL for existing user (guacamole_user) OK Adding database tables... OK Create guacd.conf file... Starting guacd service & enable at boot... Created symlink /etc/systemd/system/multi-user.target.wants/guacd.service → /etc/systemd/system/guacd.service. Cleanup install files... Installation Complete - Visit: http://localhost:8080/guacamole/ - Default login (username/password): guacadmin/guacadmin ***Be sure to change the password***. $
Guacamole のインストールが完了したら、 http://localhost:8080/guacamole/ にアクセスして、管理者ユーザ guacadmin でログインする。
サーバログ
Guacamole Server
systemd ジャーナル参照 journalctl で確認できる
journalctl -u guacd -f
Guacamole Client as Tomcat
Guacamole Client というか、WEBサービスの Tomcat のログ /var/log/tomcat9 に出力される。
ユーザと接続先の作成
自身のRDP接続
ホスト名は、接続先のIPアドレスかホスト名を指定する。localhost は、WSL 側になるので注意。自己証明書を使っている場合、サーバ証明書を無視する にチェックする。
- 接続の編集
- 名前: localhost (任意)
- ロケーション:ROOT (任意)
- プロトコル: RDP
- 同時接続制限
- 最大接続数: 1 (規定値)
- ユーザ毎の最大接続数: 1 (規定値)
- ロードバラシング
- プロキシパラメータ
- パラメータ
- ネットワーク
- ホスト名: 192.168.0.1 ※接続先のIPアドレス
- ポート: 3389
- 認証
- ユーザ名:接続先のユーザ
- パスワード:接続先のパスワード
- ドメイン:接続先のドメイン
- セキュリティモード:未選択
- 認証の無効化:チェックしない
- サーバ証明書を無視する: チェックする
- リモートデスクトップゲートウェイ
- 基本設定
- キーボードレイアウト:Japanese (Qwert) ※接続元に合わせる
- タイムゾーン:Asia/Tokyo ※接続元に合わせる?
- ディスプレイ
- 幅:1920 ※規定は
- 高さ:1080 ※規定は
- 解像度(DPI): ※規定は
- カラー深度:Trueカラー (32ビット) ※規定は
- クリップボード
- ディバイスリダイレクト
- パフォーマンス
- リモートアプリケーション
- 事前接続 PUD/Hyper-V
- ロードバラシング
- スクリーンレコーディング
- SFTP
- Wake-on-LAN (WoL)
- ネットワーク
ネットワーク設定
稼働させているPC以外からアクセスできる様に、ポートフォワードとファイアウォールの設定を行う。
WSL2 は、稼働させている Linux は、仮想環境で動いている状態であるため、ホストの Windows とは異なるBクラスのローカルアドレスで稼働している。ただ、起動するたびに割り当てられるIPアドレスが変更されてしまう。
WSL2 のIPアドレスを確認する
$ ip r default via 172.29.32.1 dev eth0 proto kernel 172.29.32.0/20 dev eth0 proto kernel scope link src 172.29.37.xxx $ hostname -I 172.29.37.xxx $
WSL2 へポートフォワードする
管理者で下記コマンドを実行し、指定のポートのアクセスを WSL へ送る
netsh interface portproxy add v4tov4 listenport=<ポート番号> listenaddress=0.0.0.0 connectport=<ポート番号> connectaddress=<WSLゲストのIPアドレス>
ファイアウォール
Windows ファイアウォールで、ポート番号を許可する。
C:\> netsh advfirewall firewall add rule name="WSL Guacamole" dir=in action=allow protocol=TCP localport=8080 description="Guacamole on WSL" OK C:\> netsh advfirewall firewall show rule name="WSL Guacamole" 規則名: WSL Guacamole ---------------------------------------------------------------------- 有効: はい 方向: 入力 プロファイル: ドメイン,プライベート,パブリック グループ: ローカル IP: 任意 リモート IP: 任意 プロトコル: TCP ローカル ポート: 8080 リモート ポート: 任意 エッジ トラバーサル: いいえ 操作: 許可 OK C:\>
自動起動
自動的に WSL および、Guacamole を起動して、ポートフォワードの設定を行うようにする。
最終更新時間:2023年02月03日 11時10分29秒 指摘や意見などあればSandBoxのBBSへ。