Web ブラウザから SSH リモートログインできるサーバ(GateOne を使用)(Ubuntu 上)
Ubuntu 24.04 LTS環境におけるウェブブラウザ経由SSH接続用GateOneサーバの構築手順。ファイアウォールの設定、Python環境、GateOneのインストールと起動方法を詳述。長期間メンテナンスされていないためセキュリティリスクがあり、代替ツールのWetty, ttyd, Apache Guacamoleが推奨される。
要点は次の通りである.
- Ubuntu を使用する.
- ファイアウォール (ufw) を稼働させる.
- GateOne を中継サーバとして,ウェブブラウザを用いたリモートログインできるように設定する.
前準備
Ubuntu のインストール
Ubuntu のインストール手順は,「別のページ」で説明する.
Ubuntu のシステム更新
次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# (オプション) 必要に応じてシステムを再起動
sudo shutdown -r now
Python3 開発用ファイル,pip, setuptools, venv のインストール(Ubuntu 上)
次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install python3-dev python3-pip python3-setuptools python3-venv build-essential
Git のインストール
次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install git
ssh によるリモートアクセスの設定(Ubuntu 上)
要点: openssh-server をインストールする. Ubuntu 上のファイアウォールを有効にし,予期せぬアクセスを抑止する.
- ファイアウォール(ufw)を有効にする.
sudo ufw enable
- ssh を使っている場合にはこの時点で,ssh アクセスを許可しておく.
sudo ufw allow 22 sudo ufw default DENY
- ufw の設定を確認する.
ポート22についての通信が開放されていることを確認する.
sudo ufw status
- openssh server のインストール
sudo apt -y install openssh-server
- ポートスキャンを行い,ufw の設定を再確認する.
ポート22についての通信が開放されていることを確認する.
sudo apt install nmap nmap localhost
SSH によるリモートログインを行うアカウントの作成と設定
これは,SSHによるリモートログインの受付のために用いるユーザである.
ここで作成するユーザ名: ai
- 新規ユーザの作成とパスワードの設定
sudo adduser --uid 1234 --home /home/ai ai
* この操作がうまく行かなかったときは「sudo deluser ai; sudo rm -rf /home/ai」のように操作した後に,この操作をやり直す.
- パスワードの設定と,SSH キーペアの作成と, authorized_keys への公開鍵(id_rsa.pub)の追加
sudo -u ai -i mkdir ~/.ssh cd ~/.ssh ssh-keygen -t rsa -b 4096 -C "<指紋作成に用いる文字列>" # 保存先については,Enter キー.パスフレーズについては適切に設定 chmod 700 ~/.ssh cat id_rsa.pub >> authorized_keys exit
- 試しに ai ユーザでログインしてみる
ssh ai@localhost
GateOne のインストールとテスト実行
ここでの設定:使用するポート番号 8443
【注意】GateOneプロジェクトは長期間メンテナンスされておらず(最終コミット2017年頃)、セキュリティ上のリスクや最新環境での動作保証に関する懸念があることを理解した上で利用する必要がある.実運用環境ではWettyやttyd、Apache Guacamoleなどの現代的な代替手段の検討を強く推奨する.
GateOne のインストール
次のコマンドを実行する.
cd /tmp
git clone https://github.com/liftoff/GateOne
cd GateOne
python3 setup.py build
sudo python3 setup.py install
ufw で GateOne ポートの解除
次のコマンドを実行する.
sudo ufw allow 8443

GateOne の起動
次のコマンドを実行する.
sudo gateone --port=8443
ポートスキャンを行い,ufw の設定を再確認する.
ポート8443 についての通信が開放されていることを確認する.
nmap localhost
ウェブブラウザから使ってみる
ウェブブラウザで,次のURLを指定する.GateOne の画面が開くことを確認する.
https://127.0.0.1:8443
GateOne サーバを立てて,ウェブブラウザによるリモートログインを行う
- GateOne サーバの起動
gateone --port=8443 --user_dir=$HOME --disable_ssl
【警告】
--disable_ssl
オプションは暗号化を行わないため、通信内容が傍受される危険がある.特にインターネット経由での利用は絶対に避けるべきである.実運用環境ではSSL/TLSを適切に設定し、セキュアな通信経路確保のためリバースプロキシの利用も検討すべきである. - 試しに,ウェブブラウザからリモートログインしてみる
ウェブブラウザで,次のURLを指定する.
http://<IP アドレス>:8443
- ウェブブラウザで「Terminal: SSH」をクリックする.
- 「Host/OP or ssh:// URL [localhost]:」に対しては,Enter キーを入力する.
- 「Port [22]:」に対しては,Enter キーを入力する.
実運用
- ポート番号は 8443 である必要はない.
- 必要のないときは,GateOneサーバを停止する(通常はCtrl+Cで停止可能である).
- OpenSSHサーバは定期的にセキュリティアップデートが提供されるため,常に最新の状態に保つことが重要である.
- chroot による隔離を行う.(詳細はこちら)