dropbearの公開鍵認証

 SSHサーバーとしてOpenSSHのsshdが広く使われていますが、組み込み機器などシステムリソースが潤沢ではない機器ではdropbearが使われていることがあります。
 例えば、ルーター向けのLinuxディストリビューションのOpenWRTではdropbearが標準のSSHサーバーとして使われていますし、私が使っているASUSルーターSSH機能もdropbearで動いています。

 OpenSSHならユーザのホームディレクトリ下の~/.ssh/authorized_keys (Linuxの場合)や%USERPROFILE%\.ssh\authorized_keys (Windowsの場合)に接続元の公開鍵を配置するのが一般的ですが、dropbearが標準で採用されているシステムの場合、~/.sshディレクトリ自体が存在しなかったりします。
 ASUSルーターの場合はWebUIから鍵を登録したら~/.ssh/authorized_keysが生成されたのですが、OpenWRTの場合authorized_keysをどこに配置すればいいのか判らなかったので調べてみました。
 

鍵の配置先

 OpenWrt Wikiを調べてみると以下のページが見つかりました。
Dropbear public-key authentication HowTo [Old OpenWrt Wiki]

 これによると、ユーザのホームディレクトリ下ではなく、

/etc/dropbear/authorized_keys

 に、鍵を配置(追記)すればよいようです。
 

鍵生成例

 接続元(クライアント側)で以下のようにssh-keygenを叩きます(5120bitのRSA暗号方式の場合)。※dropbearはed25519などには対応していません。

ssh-keygen -t rsa -b 5120

 蛇足ながら、古めのシングルコアのARMやMIPSアーキの機器でOpenSSHでed25519を使うと、CPU負荷が高すぎてSCPでのファイル転送が激烈に劣悪なパフォーマンスになります。何でも複雑な暗号化すればいいわけではなく、(インターネット公開型機器ではそんなこと言ってられませんが、比較的脅威の低いLAN内なら)機器のパフォーマンスに見合った相対的に暗号強度の弱い(=軽い)暗号方式を使用することも検討に値するでしょう。例えばRSA暗号方式の場合でも、上記ssh-keygenコマンドの-bオプションで2048bit、4096bitを指定することもできます。低ビットにすればプロセッサの負荷を減らすことができますが、強度は下がります。
 



以上