Mein Gehirn ist mit öffentlichen und privaten Schlüsseln um die Achse gewickelt. Wenn Sie einen Cloud-Server (Instanz) auf dem EC2-Dienst von Amazon erstellen und dann eine Verbindung über SSH herstellen möchten, müssen Sie von Amazon einen privaten Schlüssel herunterladen, um die Verbindung herzustellen. Schlägt die Idee hinter dem öffentlichen / privaten Schlüssel nicht vor, dass Amazon Sie zum Herunterladen eines öffentlichen Schlüssels auffordern sollte?
Wenn ich einen SFTP-Server für einen Kunden einrichte, sollte ich dann seinen Schlüssel auf dem Server installieren oder ihm einen Schlüssel vom Server geben? Sollte es in jedem Fall ein öffentlicher oder ein privater Schlüssel sein?
Antworten:
Wenn Sie sich eingehender mit dem Authentifizierungsprozess befassen, was muss geheim gehalten werden? Amazon kennt die öffentliche Hälfte des Schlüssels, und jeder kann die öffentliche Hälfte kennen. Die öffentliche Hälfte des Schlüsselpaars zeigt, wenn sie mit der privaten Hälfte übereinstimmt, an, dass die private Hälfte zur Authentifizierung verwendet wurde.
Ihr privater Schlüssel, der Ihnen zur Verfügung gestellt wird, wenn Amazon ein Schlüsselpaar für Sie erstellt, ist nur dann nützlich, wenn Sie der einzige sind, über den Amazon verfügt. Wenn es kein Geheimnis ist, kann sich jeder andere, der es kennt, auch gegenüber jedem authentifizieren, der die öffentliche Hälfte des Schlüsselpaars besitzt.
Wer authentifiziert wird, muss die private Hälfte besitzen. Es ist in Ordnung, wenn jeder auf der Welt Sie authentifizieren kann, indem er die öffentliche Hälfte des Schlüssels hält, aber nur Sie sollten die Kontrolle über die private Hälfte haben.
quelle
Amazon bietet Dienste zur Schlüsselgenerierung an, da es unter bestimmten Betriebssystemen (Husten, Windows, Husten) möglicherweise nicht einfach ist, SSH-Schlüsselpaare zu generieren.
Bei SSH (und SFTP) wird der öffentliche Schlüssel beim Start der EC2-Instanz in der Datei authorized_keys des Benutzers installiert. Der private Schlüssel wird nur vom Benutzer gehalten und zur Authentifizierung gegenüber dem Server vorgelegt.
Aus der Dokumentation unter:
http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateKeyPair.html
Es scheint, dass Amazon das Schlüsselpaar auf seinen Servern generiert und Ihnen den privaten Schlüssel über HTTPS sendet. Dies ist vielleicht weniger als perfekt (im Idealfall haben Sie und niemand sonst den privaten Schlüssel), aber wahrscheinlich nicht so schlimm, da dies alles im Kontext Ihrer authentifizierten Sitzung geschieht und nur Sie (und Amazon vorübergehend) sehen der private Schlüssel. Sie können auch jederzeit Ihren eigenen öffentlichen Schlüssel für EC2 generieren und hochladen, wobei der private Schlüssel streng geheim bleibt.
Um SFTP-Benutzer für die Schlüsselauthentifizierung einzurichten, sollten sie SSH-Schlüssel auf ihren Computern generieren. Sobald sie ein Schlüsselpaar generiert haben, sollten sie Ihnen nur den öffentlichen Schlüssel zur Installation in der entsprechenden authorized_keys-Datei senden. Der private Schlüssel ist, wie der Name schon sagt, privat.
quelle
Die Authentifizierung mit öffentlichen Schlüsseln funktioniert in umgekehrter Richtung, wie Sie wahrscheinlich denken. Der öffentliche Schlüssel verschlüsselt Nachrichten und der private Schlüssel entschlüsselt sie. Der Server speichert den öffentlichen Schlüssel des Kontoinhabers und verwendet ihn zum Verschlüsseln einer Nachricht. Nur der Inhaber des privaten Schlüssels kann diese Nachricht entschlüsseln.
Wenn Sie jemandem ein Geheimnis senden, das mit seinem öffentlichen Schlüssel verschlüsselt ist, und er Ihnen mitteilen kann, um welches Geheimnis es sich handelt, wissen Sie, dass er über den entsprechenden privaten Schlüssel verfügt. Der Benutzer wird dann authentifiziert.
Für AWS müssen Sie Ihren privaten Schlüssel herunterladen und speichern, da er aus Sicherheitsgründen nicht gespeichert wird. Da der private Schlüssel nirgendwo in AWS gespeichert ist, können Sie sicher sein, dass Ihre EC2-Instanz sicher ist.
quelle
In gewisser Hinsicht spielt es keine Rolle. Ein privates / öffentliches Schlüsselpaar besteht aus zwei Teilen. Welcher davon der öffentliche ist, liegt bei Ihnen. Wenn etwas mit einem Schlüssel verschlüsselt ist, benötigen Sie den anderen, um es zu entschlüsseln. Wenn Sie einen Schlüssel öffentlich und nicht den anderen veröffentlicht haben, ist der private Schlüssel derjenige, den Sie nicht veröffentlicht haben.
Um zu Ihrer eigentlichen Frage zu gelangen: Vermutlich besteht der Schlüssel, den Amazon Ihnen gibt, darin, Ihnen die Kontrolle über Ihre eigenen Ressourcen zu ermöglichen, sodass diese nicht an andere Personen weitergegeben werden sollten. In diesem Zusammenhang müssen Sie Amazon vertrauen, um Ihren privaten Schlüssel zu haben, zumindest so lange, bis die Einrichtung abgeschlossen ist.
Wenn Sie möchten, dass sich Ihr Kunde auf diese Weise anmeldet, muss er Ihnen einen Schlüssel geben, den er bereit ist, mit Ihnen zu teilen. Daher der öffentliche Schlüssel. Sie installieren dies auf dem Server in authorized_keys, was effektiv besagt, dass "jeder, der den privaten Schlüssel besitzt, der diesem öffentlichen Schlüssel entspricht, auf diese Ressource zugreifen kann".
quelle