Ubuntu の SSH サーバで PasswordAuthentication no が有効にならないときに確認すること
SSH サーバの設定で認証方式を公開鍵認証のみに限定したい場合、/etc/ssh/sshd_config に
PasswordAuthentication no
を追加し
sudo service ssh restart
を実行するというのは、各地で説明されているのですが、環境によってはこれだけでは有効になりません。論より証拠、以下のコマンドを実行してみると、現在の設定を確認することができます。
sudo /usr/sbin/sshd -T | grep passwordauthentication
これで
passwordauthentication yes
と表示されてしまった人が今回の記事の対象者です。
/etc/ssh/sshd_config の冒頭部をよく見ると
Include /etc/ssh/sshd_config.d/*.conf
と書かれています。つまり、/etc/ssh/sshd_config.d/ 以下にある .conf で終わるファイルが存在する場合、こちらの設定が優先されるのです。インストール時の設定などにより、/etc/ssh/sshd_config.d/50-cloud-init.conf が作成されており、この中に
PasswordAuthentication yes
が設定されている場合、/etc/ssh/sshd_config で同じ設定項目を書いても無視されます。
Linux の設定に慣れている人ならば、ここで「/etc/ssh/sshd_config.d/99-custom.conf とか作って設定すればいいんだよね?」と考えると思いますが(私も考えました)、sshd の設定は先に書かれたものが有効になります(sshd_config の冒頭部に Include があるのはこのため)。
したがって、50-cloud-init.conf に書かれた設定項目を上書きするには、/etc/ssh/sshd_config.d/49-custom.conf に設定を追加する必要があります。割と間違えやすいので要注意かと。
ディスカッション
コメント一覧
まだ、コメントがありません