ユーザーパスワードを変更するときにキーを再生成する必要がないのはなぜですか?

ユーザーパスワードを変更するときにキーを再生成する必要がないのはなぜですか?

たとえば、Linuxボックス(Ubuntu、しかしそれは重要ではありません)somemachine.example.comとそのコンピュータにアクセスできるユーザーがありますsomeuser

次のようにパスワードを明示的に提供して、そのマシンにSSH経由で接続できますsomeuser

ssh [email protected]
Password: *****

...またはPEMファイル(公開鍵)を提供して、次の操作を行います。

ssh -i ~/path/to/somemachine.pem [email protected]

someuser今日、私は(コマンドを使用して)そのボックスのパスワードを変更する必要があり、passwdそのユーザーの新しいキーペア(したがって新しいPEMファイル)を再生成する必要がないという事実に少し驚きました。

知りたい:なぜですか?someuserパスワードと公開/秘密鍵の間に接続はありませんか?それでは、Linuxは次のセットを維持しますか?資格、これはパスワードかもしれませんか、それとも公開鍵ですか? Linuxはキーとパスワードを特定のユーザーにどのように関連付けますか?

答え1

sshほとんどすべてのUnixファミリーシステムでは、キーとログインパスワードは異なる場所に保存されます。理由なし(30年経歴外)今後 ssh)両方とも同じストレージを使用することは不可能です。しかし、現在、私たちはキーマネージャに資格情報のコレクションを保存するための別々の分散化された試みを持っています。

通常、ユーザーssh情報は次の場所にあります。$HOME/.ssh、ログイン情報は次の場所にあります。/etc/passwd/etc/shadow//etc/groupそして/etc/gshadow

キーマネージャできる必要に応じてパスワード(または同様の情報)を入力してそれらを組み合わせてください。しかし、これは例外であり、ルールではありません。

なんかお勧めしませんが、私はスネアドラム工場すぐに戻ってください。 Googleで検索してみると2000年ごろに出てきますね。さまざまなアプリケーション(またはリモートシステム)の資格情報を収集し、そのコレクションをユーザーと関連付けます。

答え2

SSHキーはユーザーパスワードとはまったく関連付けられておらず、完全に独立した2つの認証メカニズムです。 SSHキーを使用すると、sshdは試行する公開キーを検索または検索し$HOME/.ssh/authorized_keysます。$HOME/.ssh/authorized_keys2これらの公開鍵はクライアントの秘密鍵と同じであり、一部クリプトマジックユーザーを認証します。

SSHがパスワード認証を使用している場合は、認証にPAMを使用します。 PAMはさまざまな方法で使用量を確認できますが、最も一般的な方法はローカルユーザーとしてログインすることです。ローカルユーザーログイン資格情報はに保存され/etc/passwd、対応するパスワードはに保存され/etc/shadow、グループ情報はに保存されます/etc/group

関連情報