低電力デバイスとルーターにおけるOpenSSHの代替手段
マイクロコントローラー、ルーター、Dockerコンテナ向けにミニマリストなイメージを構築している場合、メモリの每一メガバイトが贅沢品になります。フル機能のOpenSSHはサーバーでは素晴らしいですが、組み込みシステムでは角打ちにトラックが到着するようなものです。依存関係の連鎖を引きずりながら、RAMが目の前で溶け落ちていきます。
このような状況では、人々はDropbearに頼ることになります。Matt Johnstonが書いたコンパクトなSSHサーバー兼クライアントです。このプロジェクトは20年以上前に登場しましたが、現在でも積極的にメンテナンスされており、OpenWrtやネットワーク機器ファームウェアのデフォルト標準として採用されています。
内部構造と省スペース化の仕組み
Dropbearは一つの特定のタスクを解決します:SSH-2プロトコルの基本的なセキュリティを維持しながら、ディスク容量とRAMを節約することです。適切なフラグでコンパイルすれば、結果として得られるバイナリはわずか数百キロバイト程度になります。
開発者はBusyBoxユーティリティと同様の概念を適用しました:単一のマルチパーパスバイナリです。このモードでは、1つのファイルがサーバー、クライアントdbclient、鍵ジェネレーターdropbearkey、コンバーターdropbearconvertの機能を処理します。必要な名前のシンボリックリンクを1つのバイナリに向けて作成すると、プログラムは呼び出されたファイルの名前に基づいて動作モードを決定します。
サイズを縮小するための追加のテクニックもいくつかあります:
- 組み込みクライアントはデフォルトでファイル転送の進捗バーなしでコンパイルされています。進捗インジケーターが必要な場合は、コンパイル時に明示的にパラメータ
SCPPROGRESS=1を渡す必要があります。 - 設定ファイル
options.hでは、使用していない暗号化アルゴリズム、ポート転送、パスワード認証サポートを手動で無効化して、最終的なファイルサイズをさらに小さくできます。
鍵の取り扱いにおける注意点
標準的なOpenSSHツールに慣れている場合、いくつか予想外の点に直面するかもしれません。サーバー側では、すべてが馴染み深く、authorized_keysファイルは標準的な方法で機能します。公開鍵をauthorized_keysまたはauthorized_keys2形式で追加します。主な注意点は、エディターが鍵の文字列を複数行に分割しないこと、authorized_keysディレクトリの権限が所有者以外の書き込みを許可しないことを確認することです。
クライアント側とホスト鍵の生成には、癖があります。このユーティリティは秘密鍵に独自の形式を使用します。おなじみのRSA鍵をscpクライアントで使用するには、まず変換する必要があります:
dropbearconvert openssh dropbear ~/.ssh/id_rsa ~/.ssh/id_rsa.db
dbclient -i ~/.ssh/id_rsa.db user@remotehost
ネイティブユーティリティdropbearkeyで新しい鍵を作成すると、秘密鍵と公開鍵の両方がコンソールに直接出力されます。単純なフィルタリングで別のサーバーに追加する公開鍵を抽出できます:
./dropbearkey -y -f ~/.ssh/id_ed25519 | grep "^ssh-" > ~/.ssh/id_ed25519.pub
サーバーの起動と落とし穴
通常、SSHサーバーを起動する前にホスト鍵を手動で生成する必要があります:
./dropbearkey -t rsa -f dropbear_rsa_host_key
./dropbearkey -t ed25519 -f dropbear_ed25519_host_key
Dropbearには高速システムブートのための便利なハックがあります。起動時に鍵を生成する代わりに(弱いプロセッサでは起動が遅くなる)、サーバーにフラグ-Rを渡します。この場合、鍵は最初の着信接続時にのみディレクトリ/etc/dropbear/に自動的に作成されます。
運用時には、プロジェクトの癖に注意してください:
- サーバーを一般ユーザーとして実行することは大幅に制限されています。疑似端末(pty)の割り当て、別のアカウントへの切り替え、シャドウパスワードの使用はできません。
- パスワードで暗号化されたホスト鍵は直接サポートされていませんが、クライアントは実行中のsshd
ssh-agentに接続できます。 - プロジェクトには詳細なドキュメントがありません。主な説明はリポジトリルートのテキストファイル
INSTALL.md、MULTI.md、SMALL.mdに散らばっています。
このツールが役立つ人
Dropbearは、カスタム路由器固件の作成、flashメモリが限られたLinuxベースの機器の開発、紧凑なinitramfsイメージの構築に便利です。数十GBのメモリを持つフルサーバーでは、OpenSSHとの違いはほとんど気づきません。しかし、每一KBが重要な场合、このツールはほとんどの替代案よりもリソースを効率的に節約できます。
関連プロジェクト