• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:パスワードが拒否されてしまいます。)

パスワードが拒否されてしまう理由と復旧方法

このQ&Aのポイント
  • Aサーバーのウェブページにアクセス制限をかけるためにBasic認証を使用しているが、パスワードが拒否されてしまう現象が発生している。AサーバーとBサーバーのhtpasswdファイルは同じ内容であるが、なぜかAサーバーのページのみアクセスできない問題が発生している。
  • 問題の原因としては、サーバーの設定変更や他の要素による影響が考えられるが、具体的な変更が行われていないことから別の要因を探る必要がある。
  • 復旧するためには、BサーバーのhtpasswdファイルをAサーバーにコピーすることが考えられるが、詳しい方法や他の解決策については専門家の助言を得ることが望ましい。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

まず、htpasswdの各行の末尾に、空白文字などが付いてないか確認して下さい。 次に、htpasswdをサーバに転送した際に「テキストモードで転送したか」を確認して下さい。うっかりバイナリモードで転送すると「各行の末尾に余計な制御コードが付加」され、結果、パスワードが「意図したパスワードと異なる、不明なパスワード」になり、認証不可能になります。 >それぞれのhtpasswdを見ると、内容は全く同じなのですがこういうことってあるのでしょうか? あります。 htpasswdの中身は「ユーザー名:エンコードされたパスワード文字列」のようになっています。 A、BサーバのOSの種類やバージョンが異なる場合「エンコードされたパスワード文字列」は、2つのサーバで同じ物を共有できません。 これは「OSの種類やバージョンにより、パスワードのエンコード方式が異なる」からです。 あるサーバで「abcd1234」が「k2oJ/UJ81Q9xQ」にエンコードされた場合、別のサーバでも「abcd1234」が「k2oJ/UJ81Q9xQ」にエンコードされるとは限りません。 これは「2つのサーバ間で、htpasswdを他のサーバにコピーすると、コピーされた先のパスワードは、誰にも判らなくなる」と言う事を意味します。 >root権限でBサーバーのhtpasswdファイルがあるディレクトリごとAサーバーにコピーすれば良いのかと素人同然の方法しか思いつきません。。。 これを行うと「余計にどうしようもない状態」になります。絶対にやめましょう。 htpasswdの中身は「Aサーバ用はAサーバ上でパスワードをエンコードさせて生成、Bサーバ用はBサーバ上でパスワードをエンコードさせて生成」しなければなりません。 「サーバ上でパスワードをエンコードさせて生成」するには、A、Bサーバのそれぞれに、以下HP http://www.futomi.com/lecture/htaccess/htpasswd.html の一番下にあるのPerlのCGIを設置し、A、Bそれぞれで実行して下さい。 多分、AサーバとBサーバで「同じパスワードを使ってパスワードをエンコードすると、異なるエンコード済みパスワード文字列」が生成されるでしょう。

ko_kawauso
質問者

お礼

chie65536様 回答ありがとうございます。お礼が遅くなり申し訳ありません。 初心者の私にも分かりやすく解説して下さり、とても助かりました。 >>root権限でBサーバーのhtpasswdファイルがあるディレクトリごとAサーバーにコピーすれば良いのかと素人同然の方法しか思いつきません。。。 >これを行うと「余計にどうしようもない状態」になります。絶対にやめましょう。 なるほど。こちらで聞いておいて良かったです^^; とりあえず、再設定した方が良さそうですね。 ありがとうございました。

関連するQ&A