ssh の秘密鍵を使ったログインができないのはパーミッションのせい

ssh秘密鍵を使ったログインの設定、ローカルで鍵ペアを作って公開鍵をサーバに送ってマージしてあるはずなのにログインできない。

これにはいくつか原因があり、まず一つ目は ~/.ssh/authorized_keysパーミッション。ユーザーの Read/Write のみついている状態が必要。chmod で言うところの chmod 600 ~/.ssh/authorized_keys としておく必要がある。

もうひとつは、ユーザのホームディレクトリ自体の権限について。ユーザのホームディレクトリ自体に全員の書き込み権限がついていると authorized_keys を読んでくれない。chmod でいうところの 755 以下である必要がある。

authorized_keys の権限が誰でもいじれる状態ということは authorized_keys は信用できない、よって使用しない。なるほど納得できる動作だ。

このように秘密鍵を使ったログインにはパーミッションが大事だけど、他との兼ね合いでホームディレクトリの権限をいじることができない場合がある。こういうとき、パーミッションを無視してほしい。

そんなときは sshd 側で StrictModes no にしておくといい。パーミッションチェックせずに authorized_keys を読んでくれる。セキュリティ強度は下がるけども。