Web ブラウザから SSH リモートログインできるサーバ(GateOne を使用)(Ubuntu 上)

Ubuntu 24.04 LTS環境におけるウェブブラウザ経由SSH接続用GateOneサーバの構築手順。ファイアウォールの設定、Python環境、GateOneのインストールと起動方法を詳述。長期間メンテナンスされていないためセキュリティリスクがあり、代替ツールのWetty, ttyd, Apache Guacamoleが推奨される。

要点は次の通りである.

前準備

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 上のファイアウォールを有効にし,予期せぬアクセスを抑止する.

  1. ファイアウォール(ufw)を有効にする.
    sudo ufw enable
    
  2. ssh を使っている場合にはこの時点で,ssh アクセスを許可しておく.
    sudo ufw allow 22
    sudo ufw default DENY
    
  3. ufw の設定を確認する.

    ポート22についての通信が開放されていることを確認する.

    sudo ufw status
    
  4. openssh server のインストール
    sudo apt -y install openssh-server
    
  5. ポートスキャンを行い,ufw の設定を再確認する.

    ポート22についての通信が開放されていることを確認する.

    sudo apt install nmap
    nmap localhost
    

SSH によるリモートログインを行うアカウントの作成と設定

これは,SSHによるリモートログインの受付のために用いるユーザである.

ここで作成するユーザ名: ai

  1. 新規ユーザの作成とパスワードの設定
    sudo adduser --uid 1234 --home /home/ai ai
    

    * この操作がうまく行かなかったときは「sudo deluser ai; sudo rm -rf /home/ai」のように操作した後に,この操作をやり直す.

  2. パスワードの設定と,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
    
  3. 試しに 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 サーバを立てて,ウェブブラウザによるリモートログインを行う

  1. GateOne サーバの起動
    gateone --port=8443 --user_dir=$HOME --disable_ssl
    

    【警告】--disable_ssl オプションは暗号化を行わないため、通信内容が傍受される危険がある.特にインターネット経由での利用は絶対に避けるべきである.実運用環境ではSSL/TLSを適切に設定し、セキュアな通信経路確保のためリバースプロキシの利用も検討すべきである.

  2. 試しに,ウェブブラウザからリモートログインしてみる

    ウェブブラウザで,次のURLを指定する.

    http://<IP アドレス>:8443

  3. ウェブブラウザで「Terminal: SSH」をクリックする.
  4. 「Host/OP or ssh:// URL [localhost]:」に対しては,Enter キーを入力する.
  5. 「Port [22]:」に対しては,Enter キーを入力する.

実運用