アカウントがロックされているため、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_config
Match
Match
…
Match User username
PasswordAuthentication no