Raspberry Pi への ssh 接続に公開鍵認証を使う
あっさりいけるかと思ったら割とハマってしまったので、繰り返さないためにメモ。
必要性
パスワード入力での ssh 接続はブルートフォースアタックのリスクがあるので、公開鍵認証の利用(とパスワードでの接続の無効化)が推奨されている。
公開鍵を Raspberry Pi に送り込んでみる
Mac or Linux では、"ssh-copy-id" というものを使えばいとも簡単に鍵を転送できるらしい。
$ ssh-copy-id -i ~/.ssh/id_rsa.pub raspberrypi.local
残念ながら Windows なので別の手を使う。
WinSCP でファイル転送
WinSCP を使うと SFTP (SSH File Transfer Protocol) で超絶簡単にファイルを転送できる。 これは今後も便利に使えそうなので、試してみてよかった。
で、ssh で入って ~/.ssh/authorized_keys に格納した。
これで鍵認証でログインできるはず・・・ → "Authentication refused" orz
原因と対策
/var/log/auth.log を参照して原因を探る。
authorized_keys が正しい「ファイル」じゃない
正直「???」ってなった。authorized_keys 「フォルダ」の中に鍵を格納するものだと思ったヨ。。。はずかしい。
Permission の見直し
.ssh -> 700
authorized_keys -> 600
sshd_config の見直し
$ sudo /etc/ssh/emacs sshd_config
ServerKeyBits 1024
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys
OpenSSH 形式と PuTTy 形式の違い
ここが一番ハマッた。
OpenSSH の鍵は PuTTy ではそのまま使えないらしい。。GitHub で使えてたから鍵がまずいとは全く思ってなかった。
puttygen で秘密鍵・公開鍵を変換して配置しなおしたところ、無事認証できるようになった。