サーバーの勉強のためにRaspberryPiを触っています。
公開鍵を用いたSSH接続ができない
公開鍵を用いてSSH接続する方法は様々なサイト (こことか参考にしました) で解説されています。
しかし自分がそれらの設定を模倣してみても、Windows10のコマンドラインからSSH接続を試みようとすると
pi@raspberrypi3b.local: Permission denied (publickey).
といったエラーが出て失敗してしまいました。
SSH接続を試みた際のエラーは /var/log/auth.log に出力されるようですが、そこを確認しても
Connection reset by authenticating user pi
といったログが失敗した回数分だけ残っているばかり。
このログはSSH接続に失敗した際に残る汎用的なもののようで、このメッセージだけで検索しても不具合の原因は特定できませんでした。
.sshフォルダの所有者はrootではなく対象のユーザーに
そんなこんなで数日間唸ってたのですが、色々と弄っていたらふと上記のエラーが解決しました。
自分は.sshフォルダを作成する際にsudoコマンドでmkdirを実行していたのですが、その場合はフォルダの所有者がrootとなり、これが不具合の原因となっていたようです。
最終的にchownコマンドを用いて、.sshフォルダの所有者をpi (SSHの設定をしているユーザー) に変更したら正常にSSH接続できるようになりました。
chown pi:pi .ssh
(ちなみに、.ssh/authorized_keys も所有者をpiからrootに変えたら接続できなくなりました)
検索しても出てこなかった
.ssh と authorized_keys の permission のことは色々なサイトで注意するように言われていたけど、誰も owner のことなんて言及していなかったじゃないですか…
自分はLinuxもRaspberryPiも初心者でして、この記事の内容も初歩的なものかもしれませんが、同じ症状で悩んで検索している人の助けになればと思い投稿しました。