ロックされたアカウントが SSH 経由でログインできないように、SSH を「修正」するよう求めている他の人を他の場所で読みました。 (Debian バグ 219377 を参照) この要求は、「passwd -l のみをロックする passwd に使用されていたユーザーからの期待を裏切るため」、パッチとして拒否されました。 (Debian バグ 389183 を参照)一部の人々は、パスワード ログインからアカウントをロックできるようにしたいが、それでも SSH キー アクセスを許可したいと考えていました.
PAM は、ロックされたばかりのアカウントへの SSH キー認証を拒否しません (たとえば、無効なパスワードの試行が原因で、SSH キー認証は通常アカウントがロックされるパスワード フィールドに注意を払わないように設計されているため)
パスワード ハッシュ エントリは、pam_acct_mgmt() 時ではなく、pam_authenicate() 時に暗黙的にチェックされることを理解しています。 pam_unix.so pam_sm_acct_mgmt() はパスワード ハッシュをまったくチェックせず、pam_authenticate() は公開鍵認証中に呼び出されません。
アカウントのログインを一元的に無効にすることを意図している場合は、次のような他の回避策が考えられます。
ログイン シェルの変更。
(再)authorized_keys ファイルを移動します。
アクセスを拒否する別のオプションは、sshd_config で DenyGroups または AllowGroups を使用することです。 https://help.ubuntu.com/8.04/serverguide/user-management.html )
http://web.archiveorange.com/archive/v/67CtqEoe5MhDqkDmUMuLI からの読み取り:期限切れ アカウントをロックするのではなく、必要なことを行いますか?
あなたの質問への答えはおそらく「はい、もし パスワード フィールド以外の場所で無効にしています"
もう少し宿題をして、自分の質問に答えています.
RedHat の pam_krb5 (pam_krb5-2.3.14-1/src/acct.c
)、モジュールが認証段階に参加していない限り、pam_sm_acct_mgmt() 関数は、モジュール構成に応じて PAM_IGNORE または PAM_USER_UNKNOWN を返します。したがって、私が望むことを行うには、pam_krb5 コードを変更する必要があります。
JohnGHの答えは良い回避策です。 「プロキシ」属性を使用して、シェルを壊したり、「無効なユーザー」グループに追加したりするなど、同じ意味を伝えます。
別の回避策 (部分的にテスト済み) は、アカウントの有効期限を過去に設定し、pam_unix などのモジュールを使用してアカウント チェックを失敗させることです。これは、KRB5 ではなく LDAP を使用しますが、同じ集中管理されたユーザー ディレクトリに対してクエリを実行します。
SSH キー ベースの認証は、PAM から独立しています。次の解決策があります:
- sshd_config で鍵ベースの認証を無効にする
- sshd を変更して再コンパイルし、フックを追加して、鍵ベースの認証がアカウントが pam 経由で有効かどうかも確認するようにします。
Kerberos 経由でパスワードなしのログインを使用する場合は、次のことを確認する必要があります:
- sshd に pam を使用していない
- Kerberos が適切に構成されている。例えば。
kinit -k host/[email protected]
を実行できます -
sshd が gssapi を使用するように構成されている:
KerberosAuthentication yesGSSAPIAuthentication yesGSSAPICleanupCredentials yesUsePAM no
-
PuTTY v0.61 以降などの kerberized ssh クライアントを使用している。