web-dev-qa-db-ja.com

pam_unix(Sudo:auth):会話が失敗しました、認証は[ユーザー名]のパスワードを識別できませんでした

Centos 7製品クラスターをプロビジョニングするためにansibleを使用しています。残念ながら、以下のコマンドを実行するとansibleTiemoutおよびLinux Pluggable Authentication Modules(pamerror conversation failed

同じansibleコマンドがうまく機能し、vagrantボックスから狂った仮想ラボに対して実行されます。

Ansibleコマンド

$ ansible master_server -m yum -a 'name=vim state=installed' -b -K -u lukas -vvvv
123.123.123.123 | FAILED! => {
    "msg": "Timeout (7s) waiting for privilege escalation Prompt: \u001b[?1h\u001b=\r\r"
}

SSHdログ

# /var/log/secure
Aug 26 13:36:19 master_server Sudo: pam_unix(Sudo:auth): conversation failed
Aug 26 13:36:19 master_server Sudo: pam_unix(Sudo:auth): auth could not identify password for [lukas]
2
Lukasz Dynowski

問題が見つかりました。 PAM'sauthモジュールの問題であることが判明しました!私がどのようにして解決策を得たのかを説明しましょう。

環境:

デバッグ用にマシンをセットアップしました。つまり、4つのターミナルウィンドウを開いていました。

  • 1番目の端末(ローカルマシン):ここでは、ansible prduction_server -m yum -a 'name=vim state=installed' -b -K -u usernameを実行していました
  • 2番目の端末(本番サーバー):ここでは、journalctl -f(システム全体のログ)を実行しました。
  • 3番目の端末(本番サーバー):ここでは、tail -f /var/log/secure(sshdのログ)を実行しました。
  • 4番目の端末(本番サーバー):ここでは、vi /etc/pam.d/Sudoファイルを編集していました。

毎回、1番目の端末からコマンドを実行しましたこのエラーが発生しました:

# ansible error - on local machine
Timeout (7s) waiting for privilege escalation Prompt error.
# sshd error - on remote machine
pam_unix(Sudo:auth): conversation failed
pam_unix(Sudo:auth):  [username]

私は私のセットアップ全体を同僚に見せたところ、エラーは"PAM"で何かしなければならないと彼は私に言った。率直に言って、- [〜#〜] pam [〜#〜] について聞いたのはこれが初めてでした。だから、私はこれを読まなければならなかった PAMチュートリアル 。そのエラーはauthにある/ etc/pam.d/Sudoモジュール。インターネット経由で掘り下げて、このpam_permit.soモジュールにsufficient制御フラグを付けてつまずきました。これで問題が解決しました!

解決

基本的に、私が追加したのはauth sufficient pam_permit.soファイルへの/etc/pam.d/Sudo行です。以下の例を見てください。

$ cat /etc/pam.d/Sudo
#%PAM-1.0
# Fixing ssh "auth could not identify password for [username]"
auth       sufficient   pam_permit.so

# Below is original config
auth       include      system-auth
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so revoke
session    required     pam_limits.so
session    include      system-auth

結論:

このソリューションにたどり着くまでに4日間を費やしました。 "Ansible hosts/configファイルに重複するSudoパスワード"から始まり、"ldap specific configuration"からアドバイスを得るために、私にとってうまくいかなかった数十のソリューションを偶然見つけました常に不機嫌なシステム管理者から!

注意:

私はPAMの専門家ではないため、この修正がシステムの他の側面に影響するかどうかはわかりません。このコードを盲目的にコピーして貼り付けることには注意してください!ただし、PAMのエキスパートである場合は、代替のソリューションまたは情報をお知らせください。ありがとう!

5
Lukasz Dynowski

lukasユーザーがローカルアカウントであると仮定すると、pam_unix.soモジュールがsystem-auth pamファイルでどのように宣言されているかを確認する必要があります。ただし、特定の回答には、ユーザーアカウントとPAMの構成に関する詳細情報が必要です。


authを追加している間、十分なpam_permit.soでアクセスできます。最も安全でないテスト環境以外での使用はお勧めしません。 pam_permitのmanページから:

   pam_permit is a PAM module that always permit access. It does nothing
   else.

したがって、pam_permit.sosufficientとしてこの方法で認証に追加すると、完全にすべてのユーザーのセキュリティをバイパスします。

0

Sudo service Apache2 restartを使用してApache2を再起動しようとすると、同じエラーが発生しました

Rootにログインすると、Apache2の構成に起因する実際のエラーを確認できました。数か月前にサイトのSSL証明書ファイルを削除しましたが、Apache2でサイトを無効にしませんでした。 a2dissiteがうまくやった。

0