OpenWRT での dropbear に関するページです。

公開鍵認証を使って外部のマシンから OpenWrt マシンにパスワードなしでログインする場合

OpenWrtマシンで WAN 側からの SSH でのログインを許可する場合、パスワードログインが可能な状態(デフォルト)では brute force attack に対して無力である。そこで、パスワードログインを禁止し、その代わりに公開鍵認証によるログインを許可する。
(参考:DropbearPublicKeyAuthenticationHowto - OpenWrt

公開鍵の作成

Linuxマシン上で公開鍵と秘密鍵を作成する。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/homedir/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /homedir/.ssh/id_rsa.
Your public key has been saved in /homedir/.ssh/id_rsa.pub.
The key fingerprint is:
aa:bb:cc:dd:ee:ff:gg:hh:ii:jj:kk:ll:mm:nn:oo:pp hogehoge@hostname

公開鍵の転送

公開鍵を OpenWrt マシンへ安全な方法で転送する。

$ scp .ssh/id_rsa.pub root@openwrt-server:/tmp/

公開鍵の登録

OpenWrtマシンで以下の作業を行う。

  • /etc/dropbear/authorized_keys ファイルがない場合
    # mv /tmp/id_rsa.pub /etc/dropbear/authorized_keys
    # chmod 600 /etc/dropbear/authorized_keys
  • /etc/dropbear/authorized_keys ファイルが存在する場合
    # cat /tmp/id_rsa.pub >> /etc/dropbear/authorized_keys
    # rm /tmp/id_rsa.pub
    これで、パスワードなしでログインできるようになった。

パスワードログインの禁止

UCI で管理するので、以下のように PasswordAuth? を off にすればよい。

# uci set dropbear.@dropbear[0].PasswordAuth=off
# uci commit dropbear
# /etc/init.d/dropbear restart

公開鍵認証を使ってOpenWrtマシンから外部のサーバにパスワードなしでログインする場合

OpenSSHとコンパチな公開鍵をdropbearで作成する

公開鍵を作成する

# dropbearkey -t rsa -f /root/.ssh/id_rsa
Will output 1024 bit rsa secret key to '/root/.ssh/id_rsa'
Generating key, this may take a while...
Public key portion is:
ssh-rsa
AAAAB3N.............................................................. root@OpenWrt
Fingerprint: md5 65:95:...............................

上記コンソール画面の下3行分をパスワードなしでログインしたいサーバの $HOME/.ssh/authorized_keys にコピーする。

オプションを指定してログインする

ssh を -i オプションを付けて起動する。

# ssh -i /root/.ssh/id_rsa -l ユーザ名 リモートサーバ名

パスワードなしで rsync を使ってリモートサーバとファイルを同期する。

rsync で -e オプションを使って rsh のかわりに ssh を指定し、さらに ssh のオプションに -i と -l を指定すればよい。

# rsync -avz -e "ssh -i /root/.ssh/id_rsa -l リモートホストのユーザ名" /somewhere/sourcedir/ remote_host_name:/anywhere/destinationdir/

ローカルホストの /somewhere/sourcedir 以下のファイルが リモートホストの /anywhere/destinationdir 以下と同期される。


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-07-22 (水) 18:36:55 (2865d)