公開鍵SSH認証のためにアカウントをロック解除しますが、パスワード認証を無効にする方法は?

公開鍵SSH認証のためにアカウントをロック解除しますが、パスワード認証を無効にする方法は?

アカウントがロックされているため、sshからのログインは許可されません。 SSHによる公開鍵認証のためにサーバー上でユーザーのロックを解除したいのですが、パスワードログインは有効にしたくありません。

私は試した:

# passwd -u username
passwd: unlocking the password would result in a passwordless account.
You should set a password with usermod -p to unlock the password of this account.

ログエントリの確認:

Mar 28 00:00:00 vm11111 sshd[11111]: User username not allowed because account is locked
Mar 28 00:00:00 vm11111 sshd[11111]: input_userauth_request: invalid user username [preauth]

ベストアンサー1

何をしても、アカウントをpasswd -uパスワードフィールドが空のままにしないでください。これにより、パスワードを入力せずにログインできます(これを拒否するSSHを除く)。

アカウントをパスワードなしでロック解除するように変更します。パスワードデータベースのパスワードハッシュが文字列のハッシュではない場合、そのアカウントにパスワードはありません。伝統的に*これは、または同じ単一文字列を使用して実行されます。!

ロックされたアカウントはパスワードフィールドに特別なトークンを使用するため、文字列はどの文字列のハッシュにもなりません。このフラグはシステムによって異なります。 Linuxでは、このpasswdコマンドは先頭に追加してロックされたパスワードを表示します!。 OpenSSHは、フィールドがで始まるとアカウントをロックされたものとして扱います!。他のUnixバリアントは同様ですが、同じではないメカニズムを使用する傾向があるため、パスワードデータベースが異機種間ネットワークで共有される場合は注意してください。

Linuxでは、SSHアクセスを許可しながらパスワードベースのアカウントアクセスを無効にできます(他の認証方法、通常はキーペアを使用)。

usermod -p '*' username

ユーザーは有効なパスワードを入力する必要があるため、アカウントをパスワードに戻すことはできません。

必要に応じて、アカウントにパスワードがあるかどうかにかかわらず、パスワード認証を拒否するようにSSHを設定できます。アカウントがロックされていると見なさないようにSSHを準備する必要があります。たとえば、Linuxでは!パスワードフィールドを削除する必要があります(ただし、フィールドを空にしないで*上記のように設定します)。 SSHのパスワード認証を無効にするには、または(システムの場所に関係なく)ディレクティブをPasswordAuthentication追加します。特定のユーザーにのみディレクティブを提供するには、ブロックを使用してください。ブロックが必要です。/etc/sshd_config/etc/ssh/sshd_configMatchMatch


Match User username
    PasswordAuthentication no

おすすめ記事