金子邦彦研究室インストールUbuntu, WSL2Web ブラウザから SSH リモートログインできるサーバ(GateOne を使用)(Ubuntu 18.04上)

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

ユースケース: Web ブラウザの側では何も設定しない(プラグインのインストールなども行わない)で,ssh リモート接続ができるようにしたい

そのために,中継用のサーバを立てる. HTML5対応の Web ブラウザを使用.

要点は次の通り

前準備

Ubuntu のインストール

Ubuntu のインストール手順は,「別のページ」で説明している.

Ubuntu のシステム更新

次のコマンドを実行.

sudo apt -y update
sudo apt -yV upgrade
sudo shutdown -r now

Python3 開発用ファイル,pip, setuptools, venv のインストール(Ubuntu 上)

次のコマンドを実行.

sudo apt -y update
sudo apt -y install python-is-python3 python3-dev python-dev-is-python3 python3-pip python3-setuptools python3-venv build-essential

Git のインストール

次のコマンドを実行.

sudo apt -y 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. /etc/hosts.allow は,次の行を含むように編集

    ※GateOne を経由せずに,ssh でリモートログインして使いたいときは,/etc/hosts.allow ログイン元の IP アドレスについての設定も含めておく必要がある.そして,いくつかの設定を行っておくこと.

    sshd: 127.0.0.1
    
  5. /etc/hosts.deny は,次のように編集
    ALL: ALL
    
  6. openssh server のインストール
    sudo apt -y install openssh-server
    
  7. ポートスキャンを行い,ufw の設定を再確認

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

    sudo apt install nmap
    nmap localhost
    

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

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

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

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

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

  3. パスワードの設定と,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
    
  4. [image]
  5. 「sudo -u ai -i」により,ユーザ ai で作業していたのを,元に戻す.
    exit
    
    [image]
  6. 試しに ai ユーザでログインしてみる

    ssh ai@localhost
    
  7. [image]

GateOne のインストールとテスト実行

ここでの設定:使用するポート番号 8443

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
[image]

GateOne の起動

次のコマンドを実行.

sudo gateone --port=8443

ポートスキャンを行い,ufw の設定を再確認

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

nmap localhost

Web ブラウザから使ってみる

Web ブラウザで,次のURLを指定.GateOne の画面が開くことを確認.

https://127.0.0.1:8443

GateOne サーバを立てて,Webブラウザによるリモートログインを行う

  1. GateOne サーバの起動
    gateone --port=8443 --user_dir=$HOME --disable_ssl
    
    [image]
  2. 試しに,Webブラウザからリモートログインしてみる

    Web ブラウザで,次のURLを指定

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

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

実運用