Shell in a Box が便利だった
Macからはターミナルで解決するし、特に生活に不便を感じないんだが、ちょっとしたファイルサーバーのメンテンス(ファイル消す)とかでMac起動するのもめんどくさい
iOS Safariから使えるターミナル
各種ターミナルのアプリがあるんだが、秘密鍵のインストールとかめんどくさいし。
インストール
sudo apt install shellinabox
しかも手軽にインストールができる。
起動
sudo service shellinabox start
アクセス
open https://127.0.0.1:4200
これでOK。あとはログイン画面が出てくる
アクセスする
https でアクセスする必要がある。
基本的な設定
/etc/default/shellinabox 設定ファイル
基本的な設定ファイルは debianの場合は次の場所に保存されていました。
# Should shellinaboxd start automatically SHELLINABOX_DAEMON_START=1 # TCP port that shellinboxd's webserver listens on SHELLINABOX_PORT=4200 # Parameters that are managed by the system and usually should not need # changing: # SHELLINABOX_DATADIR=/var/lib/shellinabox # SHELLINABOX_USER=shellinabox # SHELLINABOX_GROUP=shellinabox # Any optional arguments (e.g. extra service definitions). Make sure # that that argument is quoted. # # Beeps are disabled because of reports of the VLC plugin crashing # Firefox on Linux/x86_64. SHELLINABOX_ARGS="--no-beep"
ローカルホストに限定する
デフォルトでは 0.0.0.0 を listen してしまうので、localhsot に限定する。
SHELLINABOX_ARGS="--no-beep --localhost-only"
nginx と組み合わせる。
http 通信なので、 ssl とかめんどくさいことは nginx にリバプロさせる。
location /my.shell/ { proxy_pass https://localhost:4200//; }
これで、nginx と組み合わせる事ができる。あと外向きにCertbot でLetsEncyptすれば、SSL問題なく使えそうだ。
nginx に認証を掛ける。
nginx には auth_request ディレクティブがあるので、これを使って認証を掛けることにする。
location /my.shell/ { auth_request /check_oauth.php; error_page 401 =302 https://$host/oauth.php?redirect_to=$uri&$query_string; proxy_pass https://localhost:4200//;
うん、これで安心
auth_request については、以前書きました。→http://takuya-1st.hatenablog.jp/entry/2018/05/08/182127
便利な点
docker のコンテナにssh 入れなくてもぱぱっと状況を見ることできそう。
iOS から使うと便利。
ターミナルをインストールしなくてブラウザで解決するね。
iOS はアプリを入れられないから、足りない機能やちょっとしたツールは、ブラウザで解決する事が多いしこれで安心。
難点
使ってみてわかった問題。
ログインがローカル経由になるのでリモートIPや接続ログが全部リンクローカルアドレスになる。
転送と描画に時間がかかるので、巨大なファイルをcat すると表示終了までに時間がかかりすぎてヤバイ。
公開鍵認証を使うのが大変。踏み台のDockerに入れるべきかもしれない。
追記
プロセスのfork と exec がどうなってるのかなと、ps叩いてみたら、/usr/bin/shellinaboxd が *:4200 で待ち受けて、root で login を呼び出してて、pts/0 を作ってる
ssh とはちょっと違うのでWEBブラウザでSSHというにはちょっと違うかな。
shellin+ 21095 0.0 0.0 37724 5472 ? Ss 17:02 0:00 /usr/bin/shellinaboxd -q ... shellin+ 21096 0.0 0.0 37184 2124 ? S 17:02 0:00 \_ /usr/bin/shellinaboxd -q ... root 23435 0.0 0.0 74232 3484 pts/0 Ss 18:12 0:00 \_ login -p -h 127.0.0.1 takuya 23444 0.1 0.0 26504 11024 pts/0 S 18:12 0:00 \_ -bash takuya 23803 0.0 0.0 38196 3780 pts/0 R+ 18:13 0:00 \_ ps auxf
右クリックメニューで、色を変える
右クリックメニューでキーボードを有効にする
キーボードを常にONにできたらiOSで優秀なターミナルとして動作可能なんだけど。キーボードを常にONにする方法がわからないですね。
iOSの場合は、ランドスケープ(横向き)のすると、キーボードを使いやすい。
2021-11-24 追記
キーボードとカラーについて追記
参考資料
https://www.smarthomebeginner.com/increase-shellinabox-security/