ちょっと... というか, だいぶ前に id:hoto17296 などと一緒にEdgeRouter Xを購入していました.
EdgeRouter Xは, ネットワーク機器ベンチャーUbiquiti Networksというところが開発しているルータ製品の1つで, 安価なわりに高機能で評判... らしく, いつか遊べると良いのでは? ということで買っていたのでした.
詳しくはこちらのサイトを見て下さい. 様々な設定手順とかも紹介されていて便利です:
で, 買ってから半年くらいは, 単純にルータとして使っていたのですが, 流石に勿体無いし, そろそろ本腰入れていろいろやってみるか... ということで, この土日にいろいろやっていました. その中で幾つか知見があったので, ちまちまとではありますが, まとめて公開していこうと思います.
公開鍵を使ってログインする
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 なる仕組みがあったとは https://t.co/fH0alnQyws
— ほと (@hoto17296) 2017年10月15日
注意点
ここで設置して読み込ませる公開鍵は, コメント部分が必要になります.
というのも, 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です.