状況

  Fedora 32,33上でSSHのパスワード認証の無効化が出来ません。sshサービスを起動して、firewalldを通すだけでパスワード認証は出来る訳でき、通常は/etc/ssh/sshd_configを編集してしまうだけなのですが… 注意としては、公開鍵認証の設定がちゃんと確立出来ている事を確認しておいて下さい。失敗すると接続出来なくなります。


Fedora 37では、この記事の内容を設定する必要はありません。(2022年11月7日(月))

解決方法

解決方法はとても簡単でした。大分探したのですけども。/etc/ssh/sshd_config.d/50-redhat.confを以下のように編集です。もちろん、sshd_configも同様に。

PasswordAuthentication yes

の行のyesをnoにするか削除して下さい。

PasswordAuthentication no

このファイルを探すのに苦労しました。sshd_config.dディレクトリがrootだけしか実行権限が付いてなくて、bashのファイル補完に出てこなかったので、気づきませんでした。しかし、この設定は2020年12月1日現在では修正されていて該当行はなくなっているので、環境によっては/etc/ssh/sshd_configのこの行を変更するだけで良いかもれしれません。また、sshd_config.d以下のファイルが他にもあればその設定も有効になってしまうので気をつけて下さい。ちゃんとパスワード認証が無効化されていれば、秘密鍵指定なしでは以下のように出力されるはずです。

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

まとめ

Fedora 32 33でのパスワード認証の無効化を解説しました。sshd_configを編集しても無効化出来ないならば、sshd_config.d/以下ファイルを修正すれば直ります。パスワード認証無効化はセキュアなsshリモート接続に必須なので、しっかり設定しておきましょう。