it-swarm.com.de

Wie kann der SSH-Server wissen, dass der private Schlüssel falsch ist, wenn noch keine Passphrase angegeben wurde?

Ich habe einen Server, auf den ich über SSH zugreife. Ich erlaube die Authentifizierung nur mit privatem Schlüssel. Wenn ich mich über PuTTY anmelde, werde ich normalerweise zuerst nach dem Benutzernamen und dann nach der Passphrase für den Schlüssel gefragt. Aus Neugier habe ich einen neuen privaten Schlüssel erstellt, der für meinen Benutzer ungültig sein sollte, und ich habe auch eine Passphrase darauf gesetzt. Zu meiner Überraschung wurde der Schlüssel, mit dem versucht wurde, sich bei meinem Server anzumelden, abgelehnt, nachdem ich nach der Passphrase gefragt wurde, nachdem ich den Benutzernamen angegeben hatte.

Ich frage mich, woher der SSH-Server wissen kann, dass der private Schlüssel falsch ist, wenn die Passphrase dafür noch nicht angegeben wurde.

46
vakus

Während Sie den privaten Schlüssel verschlüsselt haben, ist der öffentliche Schlüssel weiterhin lesbar. SSH-Authentifizierung mit der Methode " publickey " sendet der Client jeden potenziellen öffentlichen Schlüssel an den Server. Anschließend teilt der Server dem Client mit, welcher Schlüssel zulässig ist. Wenn einer der Schlüssel zulässig ist , muss der Client den privaten Schlüssel entschlüsseln, um eine Nachricht zu signieren, wodurch der Besitz des privaten Schlüssels nachgewiesen wird.

In Ihrem Experiment antwortete der Server, dass keiner der angegebenen Schlüssel für Ihren Benutzernamen zulässig war, sodass kein privater Schlüssel entschlüsselt werden musste. Die Authentifizierung war bereits fehlgeschlagen.

83
AndrolGenhald

Während der Verbindung sendet der Client nacheinander einen Fingerabdruck aller verfügbaren Schlüssel an den Server.

Wenn der Server dem Client signalisiert, dass ein gültiger Schlüssel gefunden wurde, verwendet der Client diese und fragt bei Bedarf nach der Passphrase.

Versuchen Sie, ssh mit der Debug-Option auszuführen:

ssh -o LogLevel=DEBUG3 [email protected]

fingerabdruck suchen mit

ssh-keygen -l -f .ssh/id_rsa

Um autorisierte Schlüssel zu überprüfen, Zeile für Zeile:

while read line;do
    ssh-keygen -l -f <(echo "$line")
  done <.ssh/authorized_keys 
14
F. Hauri