MENU

Webブラウザでシェルにアクセスする Shell In A Box のセットアップ備忘録

目次

目的と再現環境

Webブラウザを経由してサーバーまたはローカルマシンにセキュアにアクセスできるターミナル環境を構築することは、リモートワークフローや簡易的なサーバー管理において利便性が高い。本記事は、WebベースのSSHクライアントである Shell In A Box (SIA) をmacOS上にセルフホストし、LAN内の他のPCからアクセス可能にするまでの具体的な手順を記録することを目的とする。

前提となる再現環境

本記事で解説する手順は、以下の環境を前提とし、Macをホストマシンとして使用する。

  • ホストOS: macOS (Homebrewがインストールされていること)
  • クライアント環境: LAN内の任意のPCにインストールされたWebブラウザ
  • ツール: Shell In A Box (SIA)

この手順は、特別な外部サービスを必要とせず、Homebrewが利用できる環境であればすぐに再現できる。

Shell In A Boxのインストールと基本的な起動

Shell In A Box を使用可能にする最初のステップは、MacのパッケージマネージャーであるHomebrewを利用したツールのインストールである。HomebrewはmacOS上でUNIXツールやパッケージを簡単に管理するためのデファクトスタンダードであり、この手順を大幅に簡略化する。

Homebrewが導入されていることを確認した後、ターミナルで以下のコマンドを実行し、Shell In A Boxをインストールする。

Bash

brew install shellinabox

インストール完了後、Shell In A Box デーモン(shellinaboxd)を起動する。LAN内での利用を想定する場合、アクセス制御とセキュリティのため、簡易テスト用の -t オプションではなく、ログインプロンプトを表示するデフォルトモードで起動することが推奨される。

Bash

shellinaboxd

このコマンドを実行すると、Shell In A BoxはデフォルトでTCPポート 4200 を使用して接続待ちの状態となる。この際、ターミナルには特にメッセージが表示されないことが多い。この状態でMac上のWebブラウザ(例: Chrome, Safari)を開き、http://localhost:4200/ にアクセスすることで、ログインプロンプトが表示されることを確認できる。ログイン認証には、ホストマシン(Mac)のユーザー名とパスワードを使用する。これにより、ブラウザ内でMacのターミナルを操作する準備が整う。この基本的な起動により、ローカルマシンでの動作が確認でき、次のステップであるLAN内アクセスへの布石となる。

LAN内アクセスを可能にする設定と手順

Shell In A Boxは、デフォルトでMacのすべてのネットワークインターフェースからの接続を待ち受ける設定になっている。そのため、LAN内の他のPCからアクセスを可能にするために必要なのは、ホストであるMacのローカルIPアドレスを確認することのみである。これにより、MacのWebブラウザだけでなく、ネットワークを介した任意のデバイスからシェルにアクセスすることが可能となる。

まず、Shell In A BoxにアクセスするためのホストとなるMacのプライベートIPアドレスを確認する。これは「システム設定」や「システム環境設定」の「ネットワーク」セクションから確認可能である。例えば、IPアドレスが 192.168.1.10 であると仮定する。このIPアドレスは、LAN内でのみ有効なアドレスであり、外部インターネットからのアクセスには使用されない。

次に、LAN内の他のPCのWebブラウザを開き、以下の形式のURLを入力してアクセスする。

http://[MacのIPアドレス]:4200/

具体例として、IPアドレスが 192.168.1.10 の場合、アクセスURLは http://192.168.1.10:4200/ となる。このURLにアクセスすると、ブラウザにShell In A Boxのログイン画面が表示される。ここで、ホストMacのユーザー名とパスワードを入力することで、LAN内の任意のPCからMacのシェル環境を操作することが可能となる。この方法は、Webベースのサービスとしてシェルを提供するため、クライアント側に追加のSSHクライアントソフトウェアをインストールする必要がないという利点がある。このプロセス全体を通じて、セキュリティを確保するため、パスワード認証が必須となることに留意すべきである。

PC起動時の自動起動設定

Shell In A Boxの利便性を最大化するには、ホストマシン(Mac)の起動時に自動的にサービスを開始させることが重要である。macOSでは、ユーザーログイン後にサービスを自動起動させるために、標準機能である launchd とその設定ファイル(.plist ファイル)を利用する。これにより、手動で毎回ターミナルで起動コマンドを実行する手間を省くことができる。

まず、以下の構造を持つプロパティリスト(plist)ファイルをホームディレクトリ内の適切な場所に作成する。ファイル名は慣例に従い、com.shellinabox.server.plist とする。保存場所はユーザーごとのサービス定義を格納するディレクトリである ~/Library/LaunchAgents/ である。

XML

# ~/Library/LaunchAgents/com.shellinabox.server.plist
<dict>
    <key>Label</key>
    <string>com.shellinabox.server</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/shellinaboxd</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>UserName</key>
    <string>(Macのユーザー名)</string>
    <key>StandardErrorPath</key>
    <string>/tmp/shellinabox.err</string>
    <key>StandardOutPath</key>
    <string>/tmp/shellinabox.out</string>
</dict>

注意点として<key>UserName</key> の値には、実際にShell In A Boxを実行するMacのユーザー名を正確に記述する必要がある。

ファイルを作成した後、ターミナルに戻り、launchctl コマンドを使用してサービスをシステムに登録し、ロード(起動)する。

Bash

launchctl load ~/Library/LaunchAgents/com.shellinabox.server.plist

この操作により、Shell In A Boxのサービスが即座に起動し、かつ、次回以降のMacの再起動時やログイン時に自動的に実行されるようになる。この設定によって、Webブラウザを開くだけで、常にLAN内からMacのシェル環境にアクセスできる状態が維持され、特にWordPress管理CLIの実行などの用途において、シームレスな作業環境が提供されるのである。

目次