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 を読んでくれる。セキュリティ強度は下がるけども。