Web ターミナル
Web ターミナルは、管理画面からホスト上の制御された shell セッションを提供します。状態確認、短いコマンドの実行、緊急時のトラブルシューティングに適しています。日常的な開発環境ではなく、SSH 鍵、監査、最小権限による管理の代わりにもなりません。
この機能は、再開可能なセッションを保持するために tmux を使用します。現在は飛牛 fnOS FPK と汎用 Linux に対応しています。Docker、OpenWrt、Synology DSM 7 SPK、Windows x86_64 には Web ターミナルの入口がありません。
権限の境界
ターミナルのコマンドは、fn-knock サービスプロセスのシステム権限で実行されます。サービスが root で動作している場合、ターミナルにも root 権限が与えられる可能性があり、誤ったコマンドでシステム、アプリケーションデータ、ネットワーク設定を直接変更できます。
- 管理パネルは、信頼できる管理者だけに公開してください。
- 管理パネルには、独立した公開範囲と強力な認証を設定してください。
- ブラウザー履歴、クリップボード、画面録画に残る可能性がある長期利用の秘密鍵や認証情報をターミナルへ入力しないでください。
- 設定ファイル、パッケージ、ファイアウォールを変更する前にバックアップしてください。
- Web ターミナルを、インターネットに公開する SSH の代替入口として使用しないでください。
tmux 環境
システム設定 → ターミナル で tmux の状態とバージョンを確認します。状態には、未インストール、インストール中、インストール済み、エラーがあります。
- 未インストールの場合は、画面からインストールを開始できます。
- インストール中は進行状況が表示され、完了すると状態が更新されます。
- インストールに失敗した場合は、エラーを確認して再インストールできます。
- tmux の準備が完了するまで、ターミナルセッションは作成できません。
インストールを行うには、デプロイ環境で該当するパッケージ管理機能とネットワーク接続が必要です。画面がインストール中のまま変わらない場合やエラーが表示される場合は、バックエンドのログ、パッケージリポジトリ、ディスク空き容量を確認してください。
ターミナル設定
| 設定 | デフォルトと範囲 | 説明 |
|---|---|---|
| Web ターミナルを有効化 | デフォルトは無効 | 有効にするとサイドナビゲーションが表示され、セッションを作成できるようになります |
| 最大セッション数 | デフォルト 3、範囲 1~12 | 上限に達すると、それ以上セッションを作成できません |
| アイドルセッションの終了時間 | デフォルト 86400 秒、範囲 60~604800 秒 | 1 分~7 日です。期限に達したアイドル状態のセッションはバックエンドによって削除されます |
アイドルセッションの終了時間は、サーバー上の tmux セッションに対する設定であり、ブラウザーのログインセッションの長さではありません。設定を保存したら Web ターミナルのページへ戻り、ナビゲーションと実行状態を確認してください。
セッションの動作
初めてページを開くと、既存のセッションが読み込まれ、このブラウザーで最近使用したセッションが優先的に復元されます。セッションがない場合は、デフォルトセッションの作成が試みられます。ページでは次の操作を行えます。
- 新しいセッションの作成。
- 複数のセッションタブの切り替え。
- 現在のセッション名の変更。
- 切断されたセッションへの再接続。
- 入力したテキストをそのままターミナルへ送信。
- 現在のセッションを終了して完全に削除。
- 最大化、フォントサイズの調整、コピー、ペースト、すべて選択。
ブラウザーは HTTP ロングポーリングでターミナル出力を受信します。短時間のネットワーク切断後は再接続できます。ページの再読み込みやブラウザーを閉じる操作では、現在の接続が解除されるだけで、バックエンドの tmux セッションは直ちには終了しません。プロセスを完全に停止してセッションを削除するには、shell を終了するか「セッションを終了」をクリックしてください。
終了したセッションは復元できません。その tmux セッション内で実行中のコマンドも同時に終了します。
モバイル端末での操作
画面幅が狭い端末では、よく使う制御キー、修飾キー、方向キー、ナビゲーションキー、フォントサイズ調整を備えたクイックツールバーが表示されます。ブラウザーからクリップボードを直接読み取れない場合は「ターミナルへ送信」ダイアログが開き、利用者が手動で貼り付けて送信できます。
モバイルブラウザーは短時間のトラブルシューティングに適しています。長いコマンド、対話型エディター、長時間実行するタスク、ファイル転送には、ローカルの SSH クライアントの方が適しています。
トラブルシューティング
入口が表示されない
デプロイ先のプラットフォームがターミナル機能に対応していること、tmux がインストール済みであること、機能を有効にして設定を保存したことを確認し、管理画面の設定を再読み込みしてください。
「現在利用できません」と表示される
実行状態には、利用できない理由が表示されます。一般的な原因は、機能が無効、tmux をインストール中、tmux が見つからない、インストールエラーのいずれかです。まず システム設定 → ターミナル で実行環境を修復してください。
新しいセッションを作成できない
現在のセッション数が上限に達していないか、古いセッションがまだ実行中でないかを確認します。必要であれば、使用しなくなったセッションを終了してください。
セッションを復元できない
セッションがアイドル状態の終了時間を超えた、別の管理者によって終了された、ホストの再起動で失われた、fn-knock が tmux へ再接続できない、といった可能性があります。実行状態を更新してから、新しいセッションを作成してください。
接続済みでも出力がない
「再接続」でターミナルへ再接続します。それでも出力されない場合は、ブラウザーのネットワークリクエストとバックエンドのログを確認してください。リバースプロキシのロングポーリングに対するタイムアウトが短すぎると、接続と切断を繰り返すこともあります。
