ライブ ISO での SSH リモート管理

routerd ライブ ISO はデフォルトで SSH デーモンを実行しません。デフォルトでは
閉鎖的な構成となっており、ローカルコンソールとシリアルコンソール(tty1、tty2、ttyS0)のみ
利用できます。これにより、パスワードなしの root アクセスがネットワーク上に露出しません。
ハイパーバイザー VM(Proxmox VE、KVM 等)としてアプライアンスを実行していて シリアルコンソールのアクセスが不便な場合、ISO イメージに認証情報を組み込むこと なくオプトイン SSH モードを有効化できます。
前提条件
authorized_keysファイルを含む config ディスク(ラベルがROUTERD_CONFIGまたはROUTERD、あるいはrouterd.usb=で指定)。- ブート時にカーネルパラメータを設定する手段(GRUB エントリの編集、またはハイパー バイザーから VM のカーネル引数を設定)。
SSH の有効化
ステップ 1 — config ディスクに公開鍵を配置
config ディスク(例: router.yaml を格納する Proxmox VM ディスク)上の routerd/
ディレクトリ内に authorized_keys ファイルを作成します。
routerd/
router.yaml
authorized_keys ← このファイルを追加
ファイルは標準的な OpenSSH authorized_keys フォーマットに従います。
ssh-ed25519 AAAA...yourkey... user@host
ホスト固有の鍵ファイルもサポートされています(汎用ファイルより先に検索されます)。
routerd/hosts/<hostname>/authorized_keys
routerd/hosts/<mac>/authorized_keys (コロン区切りまたはコンパクト小文字)
ステップ 2 — routerd.ssh=1 でブート
カーネルコマンドラインに routerd.ssh=1 パラメータを追加します。
GRUB(ライブ ISO ブートメニュー — e を押して編集):
linux /boot/vmlinuz-lts ... routerd.ssh=1
Proxmox VE — VM のブート引数を設定:
qm set <vmid> --args "-append routerd.ssh=1"
または VM の GRUB エントリに一度設定すれば、再起動をまたいで永続化します。
ブート時の動作
live-persistence.sh initが config ディスクをマウントし、router.yamlを復元。live-autostart.shが依存パッケージをインストール(まだ存在しなければopensshを含む)。live-ssh.shがカーネルコマンドラインでrouterd.ssh=1を確認。- フラグが設定されていれば、マウント済みの config ディスク上で
authorized_keysを 検索。 - 見つかった場合、鍵を
/root/.ssh/authorized_keysにインストールし、ssh-keygen -Aでホスト鍵を生成し、sshdを起動。 routerd.ssh=1が設定されているがauthorized_keysファイルが見つからない場合、 sshd は起動されず、/run/routerd/logs/routerd-ssh.logに警告がログ出力される。
セキュリティモデル
| プロパティ | 値 |
|---|---|
| デフォルト状態 | SSH 無効 |
| 認証方式 | 公開鍵のみ |
| root のパスワード認証 | 恒久的に無効(PasswordAuthentication no) |
| root ログイン | PermitRootLogin prohibit-password(鍵認証のみ) |
| ISO 内の認証情報 | なし — 鍵は実行時に config ディスクから取得 |
SSH は明示的なオプトインによってのみ有効化され、外部メディアに認証情報が 提供されている場合にのみ動作します。パスワード認証へのフォールバックはありません。
トラブルシューティング
sshd が起動しない場合:
cat /run/routerd/logs/routerd-ssh.log
よくある原因:
- カーネルコマンドラインに
routerd.ssh=1がない —/proc/cmdlineを確認。 - config ディスクがマウントされていない —
/proc/mountsで/media/routerd-usbを確認。 - 期待されるパスに
authorized_keysが見つからない —live-ssh.shが期待する場所を ログに記録している。
sshd が動作中か確認:
pgrep -x sshd
ss -tlnp | grep :22
再起動なしで SSH セットアップを再実行:
/usr/share/routerd/live-ssh.sh
関連項目
- USB 永続化 — config ディスクのレイアウトとデバイス検出