Masteries

技術的なことや仕事に関することを書いていきます.

EdgeRouter Xで公開鍵を使ってログインする

ちょっと... というか, だいぶ前に id:hoto17296 などと一緒にEdgeRouter Xを購入していました.

EdgeRouter Xは, ネットワーク機器ベンチャーUbiquiti Networksというところが開発しているルータ製品の1つで, 安価なわりに高機能で評判... らしく, いつか遊べると良いのでは? ということで買っていたのでした.

詳しくはこちらのサイトを見て下さい. 様々な設定手順とかも紹介されていて便利です:

yabe.jp

で, 買ってから半年くらいは, 単純にルータとして使っていたのですが, 流石に勿体無いし, そろそろ本腰入れていろいろやってみるか... ということで, この土日にいろいろやっていました. その中で幾つか知見があったので, ちまちまとではありますが, まとめて公開していこうと思います.

公開鍵を使ってログインする

EdgeRouter Xはブラウザから設定することもできますが, sshコマンドでEdgeRouter XにログインしてCLIで各種設定をすることもできます(EdgeRouter Xには, ネットワーク機器向けOSであるVyattaの派生版であるEdgeOSが載っています).

デフォルトだと, パスワードログインとなっていて「流石にナ〜」と思ったので, 公開鍵を使ってログインできるようにしました. とはいえ, 概ねここに書かれている通りにやればOK: SSH login with RSA keys on Vyatta/EdgeOS

$ configure
# loadkey <user> /path/to/id_rsa.pub
# commit
# save

適当な場所(上の例では/path/to/id_rsa.pub)に公開鍵を設置してコマンドを実行します. なお, <user> にはその公開鍵を使いたいユーザー名を入れます.

...ちなみに直接authorized_keysに追加した場合, ファームウェアアップデートなどで消えてしまったりするそうなので, 上記の手順で設定する必要があります.

注意点

ここで設置して読み込ませる公開鍵は, コメント部分が必要になります. というのも, loadkey コマンドの実装が, 公開鍵を半角スペースでsplitしたときに(このsplitはPerlのsplitです, なんとloadkeyを実行すると内部でPerlのスクリプトが動いていました), 3つの要素が存在しない場合エラーになるからです.

...というわけで,

ssh-rsa <...key...>

こういった形で公開鍵を用意するとダメで,

ssh-rsa <...key...> comment

このように, 適当なコメント(上記の例ではcommentのところ)を書いた上で読み込ませる必要があります. 最初, コメントがない状態で読み込ませようとして延々とエラーになり, 20分くらいロスしました...

パスワードログインを無効にする

さて, これでEdgeRouter Xに公開鍵を使ってログイン出来るようになりました. 続いて, パスワードログインの機能を無効にしましょう.

$ configure
# set service ssh disable-password-authentication
# commit
# save

で, OKです.