Raspbian(jessie)にssh鍵認証で接続
Debianがjessieになって、sshd_configのデフォルトの設定が変わりました。
それはあまり関係ないのですが、今後のことを考えてraspbianへのssh接続を鍵認証のみに絞りたいと思います。
鍵認証のみを通すように設定
まずはsshへの認証方式を鍵による認証のみにする設定を行います。
新しいDebian(jessie)では、一部の初期設定に変更が入っています。
結局設定を変更するのであまり差は感じませんが、ひとまず設定を行います。
root@raspberrypi:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org root@raspberrypi:~# vi /etc/ssh/sshd_config root@raspberrypi:~# diff /etc/ssh/sshd_config.org /etc/ssh/sshd_config 27c27,28 < PermitRootLogin without-password --- > #PermitRootLogin without-password > PermitRootLogin no 51a53 > PasswordAuthentication no
いつものようにバックアップを取得してdiffを取っていますね。
今回のDebianで加わっているのが「PermitRootLogin without-password」です。
Rootユーザではパスワードなしのログインは許すということのようです。直訳ですが。
ちなみに今回を含め、私がsshd_configを修正する時はいつも以下の設定を行っています。
PermitRootLogin no -> Rootでのアクセスを許しません。rootは無敵権限なので攻撃者が直接ログインすることを防ぎます。
PermitEmptyPasswords no -> パスワードなしでの接続を許しません。当然です。
PasswordAuthentication no -> パスワードでのログインを許しません。
これにより、パスワードなしも許さないし、パスワードがあっても許さない。
鍵認証でしか接続できなくなるわけですね。
PermitEmptyPasswordsはデフォルトでnoになっていましたのでdiffには出ていません。
ログイン用ユーザで認証鍵を作成
root@raspberrypi:~# su - hogehoge hogehoge@raspberrypi ~ $ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hogehoge/.ssh/id_rsa): Created directory '/home/hogehoge/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: ...(省略)... hogehoge@raspberrypi ~ $ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys hogehoge@raspberrypi ~ $ chmod 600 ~/.ssh/authorized_keys hogehoge@raspberrypi ~ $ cat ~/.ssh/id_rsa ...(省略)... hogehoge@raspberrypi ~ $ exit root@raspberrypi:~# systemctl restart sshd
シンプルに鍵を作成しています。オプションをいろいろ指定することも可能ですが覚えられないので今はこのシンプルなものを利用しています。
もっとちゃんと設定したい場合にはオプションを調べてみましょう。
またcatでid_rsaの中身を出力しているのは、接続元のマシンに鍵をコピーするためです。
scpとかrsyncとか,sftpなんかで移動させても面白いですね。
ftpは通信がガバガバなのでオススメしません。
以上で、設定は完了です。
クライアントから接続を確認したら、接続を切りましょう。
接続を確認する前に接続を切ってしまうと、そのあとに通信できなかった場合に詰んでしまいますよ。
私は昔詰んだことがあります。
あとがき
日々更新を意識すると簡単な設定も上げていかないと無理ですね。
zabbixの方は、まだ設定すらしていないので手順書がありません。
設定に数日ついやして書くのに1日って感じになりそうなので間はなんか他の設定でもしますか。