web-dev-qa-db-ja.com

ssh:1つの非rootユーザーに対して「PAMアカウント構成によってアクセスが拒否されました」

VMで初期化しています。ルート以外のユーザー(admin)としてログインできますが、SSHでパブリック(tbbscraper)としてログインできませんキー認証です。ログファイルで見つけることができる唯一のエラーメッセージは

_Sep 18 17:21:04 [REDACTED] sshd[18942]: fatal: Access denied for user tbbscraper by PAM account configuration [preauth]
_

クライアント側では、シンドロームは

_$ ssh -v -i [REDACTED] tbbscraper@[REDACTED]
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: [REDACTED]
debug1: Authentications that can continue: publickey
debug1: Trying private key: [REDACTED]
debug1: read PEM private key done: type RSA
Connection closed by [REDACTED]
_

「tbbscraper」を「admin」に変更すると、ログインが成功します。「接続が閉じられました」というメッセージの代わりにdebug1: Authentication succeeded (publickey).が表示されます。

これは権限の問題ではないようです...

_# for x in admin tbbscraper
> do ls -adl /home/$x /home/$x/.ssh /home/$x/.ssh/authorized_keys
> done
drwxr-xr-x 3 admin admin 4096 Sep 18 17:19 /home/admin
drwx------ 2 admin admin 4096 Sep 18 16:53 /home/admin/.ssh
-rw------- 1 admin admin  398 Sep 18 17:19 /home/admin/.ssh/authorized_keys
drwxr-xr-x 3 tbbscraper tbbscraper 4096 Sep 18 17:18 /home/tbbscraper
drwx------ 2 tbbscraper tbbscraper 4096 Sep 18 17:18 /home/tbbscraper/.ssh
-rw------- 1 tbbscraper tbbscraper  398 Sep 18 17:18 /home/tbbscraper/.ssh/authorized_keys

# cmp /home/{admin,tbbscraper}/.ssh/authorized_keys ; echo $?
0
_

... PAMレベルのアクセス制御の問題でもありません...

_# egrep -v '^(#|$)' /etc/security/*.conf
#
_

...したがって、同様の質問に対する既存の回答はどれも当てはまらないようです。私が持っている唯一の他の証拠は、次のとおりです。

_root@[REDACTED] # su - admin
admin@[REDACTED] $
_

だが

_root@[REDACTED] # su - tbbscraper
su: Authentication failure
(Ignored)
tbbscraper@[REDACTED] $
_

これは、より大規模なPAMの問題を示唆していますが、_/etc/pam.d_の内容に明らかな問題はありません。何か案は?

VMはEC2インスタンス、OSはDebian 7.1(Amazonの既成のAMI)です。

24
zwol

結局、それは/etc/shadowの1文字のタイプミスであったことが判明しました。違いを見つける:

admin:!:15891:0:99999:7:::
tbbscraper:!::15966:0:99999:7:::

そうです、tbbscraper行の感嘆符の後に2つのコロンがあります。これにより、すべてのフィールドが1つ以上になり、1970年1月8日にアカウントが期限切れになったとPAMに思わせます。

30
zwol

質問を投稿していただきありがとうございます。同じエラーが発生しましたが、問題はシャドウファイルに関連していませんでした。私は自分の修正を見つけ、このエラーをグーグルする他の人にも回答を投稿したいと思いました。このサーバー障害の質問が最初に出てきます。

/etc/security/access.confを確認してください!

認証にはActive Directoryを使用していますが、ローカルのAD以外のユーザー(jenkins)としてログインする必要がありました。私の上司は最初に/etc/security/access.confの次の行でボックスをセットアップしました:

+:root:ALL
-:ALL:ALL

私は次のように変更し、ログインが機能するようになりました。サービスを再起動する必要すらありませんでした。

+:jenkins:ALL
+:root:ALL
-:ALL:ALL
8
BoomShadow

同じエラーメッセージがありました。 sshdをシャットダウンし、デバッグモードで再起動しました

    /usr/sbin/sshd -ddd

これは理由を示しました:

    debug3: User autossh not allowed because account is locked
            ...
    input_userauth_request: invalid user <username> [preauth]

確認済みのアカウント:

    passwd -S <username>

これは、アカウントがロックされていることを示しています(フラグ "L")。新しいパスワードを設定して、アカウントのロックを解除しました。

    passwd <username>

できました。

3
MarkHelms

今朝も同じ問題が発生しましたが、サーバーはActive Directoryに対してユーザーを認証します。ユーザーのドメインパスワードの有効期限が切れていることがわかります。

2
Ab_Ro

私の場合、私はローカルのCentOS 6ユーザーの名前を変更していて、/ etc/shadowでそれらの名前を変更するのを忘れていました(パスワードなしのキー認証されており、頭に浮かびませんでした)ので、新しいユーザー名のレコードは/ etc/shadowにはありません。/var/log/secureでunix_chkpwdエラーが発生し、アクセスがPAMによって拒否されました:

    unix_chkpwd[12345]: could not obtain user info (user2)
    sshd[12354]: fatal: Access denied for user user2 by PAM account configuration
2
kuz8

私は同じ問題を抱えており、提案されたオプションはどれも機能しませんでした。しかし、私はフォーラムの1つ( https://ubuntuforums.org/showthread.php?t=196051 )で、完全に機能する「回避策」を見つけました。

編集/etc/ssh/sshd_configと設定

UsePAM no

それはおそらく本当の解決策ではありませんが、私のマシンで何かが間違いなく間違っているため(昨日はうまくいきました!)、これは少なくともうまくいきます。

0
The Godfather

私の場合、「興味深い」条件でext4 rootfsが破損した後、「/ etc/tcb/USER/shadow」がジャンクヒットしました。それはかなりテキストのように見えたので、最初の検査中に見つけられませんでした(現在ノードを再インストールすることはできませんが、そうする必要があります)。

0