Wenn Sie die Identitätsdatei explizit für ssh angeben:
ssh -i ./id_rsa ...
Ich habe diese Zeilen in ssh Debug Trace:
debug1: Offering public key: ./id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Bedeutet dies, dass ssh-generate auch id_rsa
einen öffentlichen RSA-Exponenten enthält? id_rsa
Das Format scheint ziemlich explizit zu sein, da es einen privaten Schlüssel mit dem Block "BEGIN PRIVATE KEY" enthält. "Öffentlicher Schlüssel anbieten" muss also etwas anderes bedeuten als "Senden des öffentlichen Schlüssels an den Server".
BEARBEITEN:
Zur Verdeutlichung möchte ich wissen, was genau hinter der Zeile "Öffentlicher Schlüssel anbieten" vor sich geht. Wenn der Client mehrere Schlüssel besitzt, werden alle dem Server einzeln angeboten.
Antworten:
Um eine Verbindung zu einem SSH-Server herzustellen und sich bei Ihrem öffentlichen / privaten Schlüsselpaar zu authentifizieren, müssen Sie zuerst Ihren öffentlichen Schlüssel für den Server freigeben.
dies durch Kopieren des öffentlichen Schlüssels für den privaten Schlüssel auf den Server durchgeführt wird, und das Hinzufügen sie
~/ssh/authorized_keys
entweder durch Kopieren / Einfügen, Kopieren ,id_rsa.pub
um~/.ssh/authorized_keys
auf dem Server oder mitcat id_rsa.pub >> ~/.ssh/authorized_keys
, um es in die Liste angehängt wird .Wenn Sie eine Verbindung herstellen, verwendet der Server Ihren öffentlichen Schlüssel, um eine Herausforderung zu signieren, und Ihr Client verwendet Ihren privaten Schlüssel
id_rsa
, um die Herausforderung zu entschlüsseln, sie erneut mit der öffentlichen des Servers zu verschlüsselnhost key
und sie zurückzusenden.Der Host überprüft, ob Sie die Herausforderung ordnungsgemäß entschlüsselt haben, indem Sie Ihre Antwort mit dem privaten Schlüssel entschlüsseln. Der Client / Host stellt eine verschlüsselte Verbindung her, die auf den gemeinsam genutzten Daten und nicht auf Ihren öffentlichen / privaten Schlüsseln basiert.
Bei NO POINT in der Vermittlungsstelle wird Ihr privater Schlüssel oder der private Schlüssel des Hosts ausgetauscht oder einander mitgeteilt. Ihr öffentlicher Schlüssel wird auf dem Server gespeichert, aber deshalb handelt es sich um einen öffentlichen Schlüssel.
quelle
ssh -i keyname
, teilen Sie Ihrem SSH-Client genau mit, mit welchem Schlüssel Sie eine Verbindung zum Server herstellen möchten. Wenn Sie ein Dutzend Schlüssel in~/.ssh/
Ihrem Client haben, wird NICHT jeder Schlüssel durchlaufen. Es wird nach möglicherweise ein paar anderen Dateinamen suchen~/.ssh/id_rsa
,~/.ssh/id_dsa
die im Client codiert sind, oder nach dem Schlüssel, der für diesen Host in~/.ssh/config
... long story short angegeben ist. Ihr Client bietet dem Server keine Schlüssel an.~/.ssh/authorized_keys
Host zu entschlüsseln, weiß, was die Herausforderung ist und wie sie aussieht Sobald ein öffentlicher Schlüssel ihn entsperrt, kann er diesen Schlüssel verwenden.Die Kryptographie mit öffentlichen / privaten Schlüsseln basiert auf einem sehr einfachen System:
Sie haben einen öffentlichen Schlüssel, one-way Lage ist , die Verschlüsselung zu tun, und einen privaten Schlüssel, der Lage ist de Verschlüsselungs-. Der öffentliche Schlüssel kann dann jedem auf der Welt gegeben werden, und niemand kann Ihre verschlüsselten Daten entschlüsseln, obwohl er Daten verschlüsseln kann, die Sie mit Ihrem privaten Schlüssel entschlüsseln können.
Die Antwort auf Ihre Frage lautet also "Ihr öffentlicher Schlüssel".
quelle
Ich denke nicht, dass es zu diesem Zeitpunkt tatsächlich den öffentlichen oder privaten Schlüssel senden sollte. Der Client sollte eine Verschlüsselung mit dem privaten Schlüssel für Klartext durchführen, der dem Server bereits bekannt ist. Der Host kann diese Nachricht mit dem öffentlichen Schlüssel entschlüsseln, da er weiß, dass der einzige, der sie ordnungsgemäß hätte verschlüsseln können, ein Client ist, der den entsprechenden privaten Schlüssel enthält, wodurch der Client authentifiziert wird.
Ich glaube, es heißt,
Offering public key: ./id_rsa
weil es den privaten Schlüssel (gespeichert in./id_rsa
) verwendet, um eine Verschlüsselung für den dem Server bekannten Klartext durchzuführen, und dann wird der Server den öffentlichen Schlüssel verwenden, um diesen Chiffretext zu entschlüsseln und zu bestätigen, dass er mit dem Klartext übereinstimmt. Die öffentliche Schlüsseldatei./id_rsa.pub
sollte vom Client nach der ersten Schlüsselgenerierung niemals benötigt werden. Dies wird vom Server nur zur Entschlüsselung verwendet.quelle