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

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

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

公開鍵の作成

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

pre> $ 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

/pre>

公開鍵の転送

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

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

/pre>

公開鍵の登録

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

  • /etc/dropbear/authorized_keys ファイルがない場合

    pre>

    # mv /tmp/id_rsa.pub /etc/dropbear/authorized_keys

    # chmod 600 /etc/dropbear/authorized_keys

    /pre>

    • /etc/dropbear/authorized_keys ファイルが存在する場合

      pre>

      # cat /tmp/id_rsa.pub >> /etc/dropbear/authorized_keys

      # rm /tmp/id_rsa.pub

      /pre> これで、パスワードなしでログインできるようになった。

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

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

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

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

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

公開鍵を作成する

pre>

# 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:...............................

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

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

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

pre>

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

/pre>

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

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

pre>

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

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


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-07-22 (水) 18:36:55 (3067d)