Centos 7製品クラスターをプロビジョニングするためにansibleを使用しています。残念ながら、以下のコマンドを実行するとansibleTiemout
およびLinux Pluggable Authentication Modules(pam)error conversation failed
。
同じansibleコマンドがうまく機能し、vagrantボックスから狂った仮想ラボに対して実行されます。
$ 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"
}
# /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]
問題が見つかりました。 PAM'sauthモジュールの問題であることが判明しました!私がどのようにして解決策を得たのかを説明しましょう。
デバッグ用にマシンをセットアップしました。つまり、4つのターミナルウィンドウを開いていました。
ansible prduction_server -m yum -a 'name=vim state=installed' -b -K -u username
を実行していましたjournalctl -f
(システム全体のログ)を実行しました。tail -f /var/log/secure
(sshdのログ)を実行しました。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のエキスパートである場合は、代替のソリューションまたは情報をお知らせください。ありがとう!
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.soをsufficientとしてこの方法で認証に追加すると、完全にすべてのユーザーのセキュリティをバイパスします。
Sudo service Apache2 restart
を使用してApache2を再起動しようとすると、同じエラーが発生しました
Rootにログインすると、Apache2の構成に起因する実際のエラーを確認できました。数か月前にサイトのSSL証明書ファイルを削除しましたが、Apache2でサイトを無効にしませんでした。 a2dissite
がうまくやった。