Web ターミナル
Web ターミナルは、状態確認、短いコマンドの実行、緊急時のトラブルシューティングに適しています。ターゲットは 2 種類あります。すべての配布プラットフォームで、管理者が設定したリモート SSH ターゲットへ接続できます。完全な標準 FPK、Linux サービス、macOS、OpenWrt では、fn-knock が動作するホストのローカル PTY も選択できます。
Web ターミナルの有効化と無効化
システム設定 → 機能 → Web ターミナル で全体のスイッチを管理します。デフォルトで有効で、管理画面の認証を使用します。無効にして保存すると、すべての SSH とローカルのセッションが直ちに終了し、ターミナルへのアクセスも無効になります。再度有効にしても終了した Shell は復元しません。デフォルトで無効のローカル PTY スイッチとは独立しており、Web ターミナルの有効化でローカル PTY が自動的に有効になることはありません。
プラットフォーム境界
| デプロイ方式 | リモート SSH | ローカル PTY |
|---|---|---|
| 完全な標準 FPK | 対応 | 対応。デフォルトでは無効 |
Knock Lite | 対応 | 非対応 |
| Linux サービス | 対応 | 対応。デフォルトでは無効 |
| macOS | 対応 | 対応。デフォルトでは無効 |
| OpenWrt | 対応 | 対応。デフォルトでは無効 |
| Docker、Synology DSM、Windows | 対応 | 非対応 |
| 開発環境 | 対応 | 非対応 |
リモート SSH を使うには、fn-knock の実行環境からターゲットのホストとポートへ到達できる必要があります。Docker のポート公開、OpenWrt のファイアウォール、その他のプラットフォームのネットワークルールが Web ターミナルによって自動変更されることはありません。ローカル PTY には SSH サービスを有効にする必要がなく、localhost SSH を迂回経路として使うこともありません。
権限境界
リモートターミナルのコマンドは、設定した SSH ユーザーの権限で実行されます。ローカル PTY は fn-knock 管理サービスの実効 UID/GID をそのまま継承し、自動的な権限降格やユーザー切り替えは行いません。サービスが root で動作していれば、ローカルターミナルも root Shell となり、ホストのシステム、アプリケーションデータ、ネットワーク設定を直接変更できます。
- 管理画面は信頼できる管理者だけに公開する。
- リモートターゲットでは、権限を絞った専用 SSH ユーザーと秘密鍵認証を優先する。
- リモートターゲットを追加するときは、独立した信頼できる経路でホスト指紋を照合する。
- ローカル PTY を有効にする前に、画面に表示される実行ユーザー、Shell、初期ディレクトリを確認し、リスク確認を完了する。
- 設定ファイル、パッケージ、ファイアウォールを変更する前にバックアップする。
- Web ターミナルを SSH のセキュリティ対策、コマンド監査、最小権限の代わりにしない。
ローカル PTY を有効にする
対応プラットフォームの Web ターミナル で、ローカルターミナル設定を開きます。このスイッチはデフォルトでは無効です。画面には実際の実行ユーザー、特権ユーザーかどうか、起動する Shell、初期ディレクトリが表示されます。リスク説明を読み、確認項目へチェックを入れた後にだけ有効化できます。実行可能で対応済みのログイン Shell が見つからない場合は有効にできません。
有効にすると、固定の ローカル ターゲットがリモート SSH ターゲットより前に表示されます。これは SSH ターゲットではなく、編集も削除もできません。アクティブなセッションがある状態でローカルターミナルを無効にすると、再確認が表示されます。確認後にそれらのセッションを終了し、新しいローカルセッションを作成する入口を閉じます。設定の保存時には設定リビジョンも照合されます。古い画面の内容が現在の設定と競合した場合は、他の管理者の変更を暗黙に上書きせず、再読み込みしてもう一度確認する必要があります。
Shell は、実行可能な zsh、現在のアカウントの Shell、bash、ash、sh の順で選ばれ、ログイン Shell として起動します。初期ディレクトリには、実行アカウントのホームディレクトリ、fn-knock のデータディレクトリ、/ の順に利用可能な場所が使われます。ローカルセッションではサービスプロセスの環境変数が消去され、ターミナルに必要な ID、パス、端末情報と、制限された言語・タイムゾーン変数だけが再構成されます。これにより、サービスのシークレットが Shell へ直接引き継がれることを防ぎます。
完全な標準 FPK では、ローカルターミナルのリクエストがデスクトップ CGI 入口の index.cgi から、ループバックアドレス上の Rust 管理サービスへ転送されます。fnOS 統合ゲートウェイ、Go ゲートウェイ、gRPC は経由せず、WebSocket も使いません。ターミナル操作には管理画面と同じ HTTP リクエストとロングポーリングが使われるため、この機能のために管理ポートを追加公開しないでください。
SSH ターゲットを追加する
Web ターミナル で SSH ターゲットを追加 を選び、名前、ホスト、ポート、ユーザー名、認証方式を入力します。パスワードまたは OpenSSH 秘密鍵に対応し、暗号化された秘密鍵にはパスフレーズも指定できます。
認証情報は fn-knock ホスト上で暗号化して保存されます。最初のテストではサーバーのホスト鍵を取得してアルゴリズムと指紋を表示し、明示的に確認されるまで認証情報を送信しません。新しい指紋は画面に表示されたという理由だけで信頼せず、サーバーコンソール、既知の SSH クライアント、管理者が提供した記録で照合してください。
指紋を確認して接続テストに成功した後に保存できます。ホスト、ポート、ユーザー名、認証方式、信頼済みホスト鍵を変更する場合は、既存のアクティブセッションを終了してから適用する必要があることがあります。影響を受けるセッションは保存前に表示されます。
ターゲットとセッション
ローカルターゲットと各 SSH ターゲットでは、それぞれ複数の独立した Shell セッションを作成できます。ターミナルサービスが動作している間はセッションが維持されます。ページの再読み込み、ブラウザーを閉じる操作、一時的なネットワーク切断では、ブラウザーとの接続が切れるだけで Shell はすぐには終了しません。fn-knock サービスの再起動、Shell 自身の終了、管理者によるセッション終了で該当セッションが終了します。ローカルターミナルを無効にすると、すべてのローカルセッションも終了します。終了したセッションは復元できません。
画面では次の操作ができます。
- セッションの作成、切り替え、名前変更。
- 動作中セッションへの再接続。
- 最大化、文字サイズの変更、コピー、貼り付け、全選択、テキストのそのまま送信。
- 接続段階の確認。リモート SSH では名前解決、ホスト鍵の検証、認証、PTY の要求、ローカルターミナルでは PTY を開いて Shell を起動する段階が表示されます。
- セッションの終了と削除。
同じセッションで入力操作を行えるブラウザーは、一度に 1 つだけです。その他のブラウザーは読み取り専用で出力を確認でき、必要な場合は 操作を引き継ぐ をクリックできます。引き継ぎ後、元の操作側は入力できなくなります。
リモートターゲットの編集と削除は、対象の SSH ターゲットを編集 ダイアログから行います。タッチデバイスでは、先にターゲットカードをタップすると編集ボタンが表示されます。削除時は最初に確認が表示され、アクティブなセッションが残っている場合は「セッションを終了して削除」の再確認も表示されます。確認時にはターゲットのリビジョン状態も再照合され、古い画面から、他の管理者が変更済みの設定を誤って削除することを防ぎます。成功するとターゲットと暗号化された認証情報が削除されます。セッション終了と削除は元に戻せません。
モバイル操作
狭い画面には、よく使う制御キー、修飾キー、矢印・移動キー、文字サイズの調整を備えたショートカットツールバーが表示されます。ブラウザーがクリップボードを直接読み取れない場合、画面に ターミナルへ送信 ダイアログが開き、管理者が手動で貼り付けて送信できます。
スマートフォンのブラウザーは短時間のトラブルシューティングに適しています。長いコマンド、対話型編集、継続的なタスク、ファイル転送にはローカル SSH クライアントを使用してください。
監査と認証情報
イベントセンターには、SSH ターゲットの作成、変更、削除、ホスト指紋の確認、接続テストの結果、ローカルターミナルの有効化と無効化、ローカル/リモートセッションの作成、終了、Shell の終了、接続喪失が記録されます。ローカルイベントには、ローカルバックエンド、実行ユーザー、特権ユーザーかどうかも表示されます。ターミナルに入力した個々のコマンドは監査されません。コマンド単位の監査が必要な場合は、ターゲットシステムまたはホスト側で別途設定してください。
アプリケーションのバックアップにはリモート SSH ターゲットと保護された認証情報が含まれるため、エクスポートファイルも機密の認証情報として保護してください。ターゲットを削除した後は、不要になったアカウントや公開鍵をターゲットサーバー側でも失効させます。アクティブなターミナルセッションとローカルターミナルの有効化設定はバックアップされません。復元後のローカルターミナルは無効のままなので、新しいホストで実行ユーザー、Shell、初期ディレクトリを改めて確認してから手動で有効にしてください。
トラブルシューティング
ホスト指紋を取得または確認できない
fn-knock の実行環境からターゲットのホスト名を解決でき、SSH ポートへ到達できることを確認します。指紋が想定と異なる場合は認証を続行せず、DNS、ターゲットの再インストールや鍵のローテーション記録、中間者プロキシの有無を先に確認してください。
接続テストに失敗する
ユーザー名、パスワードまたは秘密鍵の形式、秘密鍵のパスフレーズ、ターゲットの SSH サービスが対応する認証方式を許可しているか確認します。サーバーでは対話型 PTY の作成も許可されている必要があります。ファイル転送または固定コマンドしか許可されないアカウントでは、完全なターミナルを利用できません。
セッションを復元できない
セッションの段階と接続エラーを確認します。Shell が終了した、SSH 接続が切れた、リモートターゲットの設定が変更された、ローカルターミナルが無効になった、fn-knock のターミナルサービスが再起動した、などの可能性があります。ターゲットとプラットフォームの対応機能を確認してから、新しいセッションを作成してください。
表示できるが入力できない
別のブラウザーが同じセッションを操作しています。相手の作業を妨げないことを確認して 操作を引き継ぐ をクリックするか、別のセッションを作成します。
