はじめに
表題の通りで、具体的にはOtherに対して「書き込みを許容」してしまうとエラーになります。
つまり、以下にあるようなSSH認証のための準備におけるパーミッションの適切な変更は必要条件というわけです。
#公開鍵を authorized_keys に追記 $ cat id_rsa.pub >> authorized_keys #パーミッションの変更 $ chmod 600 authorized_keys
実験
.ssh及び配下ファイルの権限変更はSSH認証失敗につながるので、試す場合は事前にログイン済のセッションを保持して行うか他のログイン方法を確保した上で試してください。
環境情報
Teretermマクロを用いて公開鍵認証を行います。
対象サーバはDebian GNU/Linux 9 (stretch)で/etc/ssh/sshd_config
はデフォルト設定で以下の設定項目が「yes」になっています。ここでログイン前にパーミッションをチェックするか否かを指定しています。
StrictModes yes
ログイン実験
以下のようにauthorized_keysが存在する.sshディレクトリがあるとします。
$ ls -l /home/xxx/.ssh total 4 -rw------- 1 xxx xxx ... authorized_keys $ cat /home/xxx/.ssh/authorized_keys # memo ssh-rsa AAAAB3NzaC1yc2EAAAADAQA... 5HebarY48llLo3Hgq4anZbN5HDtRY4x.... q7255Zt+tsdi1kncIblJQDET1h0FnxEt8t.... xxx
このファイルに対して権限を変更するとどうなるでしょうか。
OKな例
$ chmod 664 /home/xxx/.ssh/authorized_keys
これはSSH認証ができます。
NGな例
$ chmod 602 /home/xxx/.ssh/authorized_keys
要はOtherに対して書き込み権限があると失敗します。
逆にグループに対しては特に反応がありません。
ちなみにsshd_configに指定したログ吐き出し先にて以下のようなメッセージが上がります。
Authentication refused: bad ownership or modes for file /home/xxx/.ssh/authorized_keys
終わりに
SSH周りの権限設定は必要最低限の付与が重要ですので、ご注意ください。
今回のケースで言えば、読み取り権限は問題ないですが書き込み権限はエラーとなります。
これは、そのサーバにアクセスできるユーザAが管理する秘密鍵に対応した公開鍵をユーザBのauthorized_keysに仕込むことでユーザBとして不正ログインが可能になってしまう状態を防いでいます。
以上、ご参考になれば幸いです。