💬

PasswordAuthenticationで躓いたお話

2023/05/27に公開3

はじめまして!今回これが最初の記事になります。
色々とつたないことも多いかと思いますが、生暖かい目で見守っていただければうれしいです。
間違い・もっといい方法などがあれば、ぜひ教えてくださいね!

概要

今回はUbuntuをインストールし、最初の設定をごちゃごちゃやってる時に発生したものです。
PasswordAuthenticationをnoに設定したのに、パスワード認証が出来てしまう!
これを解決すべく色々探して、解決できました!
(正しくない方法かもしれないという前提でお願いします・・・)

環境

  • VMWare Workstation Player による仮想環境
  • OS : Ubuntu Server 22.04.2 LTS (Minimized)
  • ssh : OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022

現象

下記の通り、/etc/ssh/sshd_config を変更しました。
がしかし、パスワード認証が出来てしまう・・・

sshd_config
# パスワードによる認証を禁止する
PasswordAuthentication no
# チャレンジレスポンスでの認証を禁止する
challengeResponseAuthentication no

原因

/etc/ssh/sshd_config.d/50-cloud-init.conf に以下のような記述がありました。

50-cloud-init.conf
PasswordAuthentication yes

解決方法

/etc/ssh/sshd_config.d/50-cloud-init.conf を書き換えましょう!

50-cloud-init.conf
# PasswordAuthentication yes
PasswordAuthentication no

以上です!ご覧いただき、ありがとうございました。
きっと少し経ったら忘れてるんだろうなぁ・・・

蛇足1(解決後感想とか)

これ、意外と検索してもなかなか見つけられませんでしたorz
そう、人に言えないほど時間をかけすぎたのですよ!悔しい!

皆さんはどのようにして探しているのでしょうか?
情報を探す力が不足しているとしみじみ思いました。

探しても探しても大体が sshd_config を変更しましょう が多いように感じました。
普通ならそれだけで反映されるのが普通なのでしょうか・・・・私の場合が特殊?

よく見た気がする情報

sshd_config
PasswordAuthentication no # -> noに変更
challengeResponseAuthentication no # -> 追記 or noに変更
UsePAM no # -> noに変更

PasswordAuthentication と challengeResponseAuthentication に関しては、 noにすることに対してためらいはなかったんですが、UsePAM に関しては、調べるうちに抵抗感というかコレジャナイ感というかそんなのが出てきて、結局変更はしませんでした。

で、結局頼ったのはChatGPTでした(笑)

もうどうにでもなれ!の感覚で設定を貼り付けて「以下のように設定した場合、パスワード認証が出来てしまいます。原因は何ですか?」と聞きました。
(仕事じゃ絶対にできない手法・・・・)

そしたら以下のように帰ってきました。

おっしゃる通り、設定ファイルにおいてパスワード認証が無効化されているにもかかわらず、パスワード認証がまだ有効であるようです。

この場合、他の設定がパスワード認証を有効にしている可能性があります。PasswordAuthenticationとChallengeResponseAuthenticationの設定が正しく行われているにもかかわらず、パスワード認証が有効になっているのは奇妙です。

問題の特定には、以下の手順をお試しください:

  1. sshd_configファイル内の他の設定を確認して、パスワード認証を有効にする可能性のある項目を見つけます。
  2. sshd_config.dディレクトリ内の他の設定ファイルも確認し、そこでパスワード認証が有効にされている場合があるか確認します。
  3. SSHサーバーの再起動前に設定変更を保存し、再起動後に設定が正しく反映されるようにしてください。

また、UbuntuではSSHサーバーがAppArmorによって制限される場合があります。AppArmorプロファイルが設定されている場合、パスワード認証が有効になることがあります。その場合、AppArmorの設定を確認し、適切な変更を行ってください。

もし問題が解決しない場合や詳細なサポートが必要な場合は、Ubuntuのバージョンや他の環境の情報などを提供していただけると助かります。その情報に基づいて、より具体的なサポートを提供できるかもしれません。

まさに、これの2番目のやつですよね。はっとさせられました。
きっとしっかり知識を持っている方なら気づかれるのかと思いますが、
何となくさわっている私には難しかったです。

蛇足2(sshd_config.dとか50-cloud-init.confとか)

もうここで終わっておけばいいような気がしますが、やはり気になってしまいます(笑)
たぶん将来見返したときに、気になりそうなので書いておこうと思います。

sshd_config.dとは

OpenSSHの設定ファイルであるsshd_configを機能ごとに分割して管理するためのディレクトリで、このディレクトリは、異なる設定項目を分割して管理するために使用されるそうです。
なるほど、sshd_configに追記される形になるのかなー?

設定が上書きされてるんだから、そらいくら書いても無駄になるわな!!!!

50-cloud-init.confとは

Ubuntuシステムにおいてネットワークの設定を管理するための設定ファイルで、cloud-initと呼ばれるツールが使用する設定ファイルの1つだそうです。
色々調べましたが要約できそうにないです。ごめんなさい。

ほんとのおわり

しばらくはUbuntu関連かなぁを思いつつ、また行き詰ったりで書いていけるように頑張ります。
こんな内容ですが、誰かの助けになることが出来れば幸いです。

これにて本当に終わりです。
ここまでお付き合いいただき、ありがとうございました。

Discussion

ShotaShota

記事を見て大変参考になりました。確かにChatGPTを活用した方がいいですね。
検索で引っかからないのはその通りだと思います。

otnotn

/etc/ssh/sshd_configの設定が、/etc/ssh/sshd_config.d/50-cloud-init.confの設定で上書きされたということは、/etc/ssh/sshd_configの中に Include /etc/ssh/sshd_config.d/*.confのような記述があるはずで、それに気づいていればすぐに解決でしたね。

今のUbuntu だとデフォルトでそうディレクトリを作るいう設定と言うことでしょう。このあたりはOS次第かと思います。ググってみると、Ubuntu の他に Amazon Linux でもそうみたいです。他にもあるかも。

2024/10時点で「ubuntu PasswordAuthentication」でググルと「sshd_config.d/*.confがあるよ」という情報はすぐ見つかるので、2023/5に見つからなかったということはここ2年以内くらいの変更なのですかね。いずれにせよ、sshd_configに書いてあることなのでファイルの中を見ていれば気づきます。