Es gibt zwei Linux-Maschinen, A und B. Skripte, die auf A ausgeführt werden, müssen in der Lage sein, SSH in B zu übertragen. Daher generiert A einen öffentlichen Schlüssel (wahrscheinlich einen ssh-keygen
generierten id_rsa.pub
) und verwendet dann seinen jeweiligen privaten Schlüssel (wahrscheinlich wieder id_rsa
), um ihn zu erstellen diese SSH-Verbindung.
Wenn etwas, was ich oben gesagt habe, falsch oder irregeführt ist, korrigieren Sie mich bitte zunächst!
Vorausgesetzt, ich bin mehr oder weniger am Ziel:
- Wie "gibt" A B seinen öffentlichen Schlüssel (
id_rsa.pub
)? Muss dies ein manueller Prozess sein oder kann er automatisiert werden? Wenn manuell, wie ist der Prozess? Wenn automatisiert, wie lautet der Befehl? Wenn B diesen öffentlichen Schlüssel "bekommt", wohin geht er oder wird er gespeichert? - Wie verwendet A beim Initiieren der SSH-Verbindung zu B seinen privaten Schlüssel (
id_rsa
) als Teil dieser Verbindung?
linux
ssh
public-key-encryption
user3178622
quelle
quelle
Antworten:
ssh-keygen
generiert sowohl den öffentlichen als auch den privaten Schlüssel, die sich zunächst nur lokal befinden. Das Übergeben des öffentlichen Schlüssels an einen anderen Host muss der Benutzer manuell ausführen, indem er ihn entweder an eine für Server B verantwortliche Person sendet oder wenn Sie ein Konto mit einem Kennwort haben, können Sie sich anmelden und selbst dort ablegen. Um eine kennwortlose Anmeldung bei Server B zu ermöglichen, müssten Sie Ihren öffentlichen Schlüssel zur Datei ~ / .ssh / authorized_keys auf Server B hinzufügen (ein öffentlicher Schlüssel pro Zeile, diese Datei kann eine beliebige Anzahl von Schlüsseln enthalten). Es gibt einen Linux-Befehlssh-copy-id
, der die ID für Sie kopiert und in die Datei einfügt.Standardmäßig verwendet ssh die Datei ~ / .ssh / id_XXX als Ihren privaten Schlüssel. XXX kann rsa, dsa oder ein beliebiges Protokoll sein, für das ein Schlüssel generiert wurde. IIRC, dsa ist alt und sollte nicht verwendet werden. Wenn Sie einen anderen privaten Schlüssel verwenden möchten, können Sie ihn in Ihrem Befehl ssh mit angeben
-i
. Solange der verwendete private Schlüssel mit einem öffentlichen Schlüssel auf dem Remotecomputer übereinstimmt (in der Datei authorized_keys für das Benutzerkonto, bei dem Sie sich anmelden), müssen Sie kein Kennwort angeben.quelle
ssh-keygen
wird ausgeführt, erwähnen Sie, dass sich die beiden Schlüssel "nur lokal befinden"? Wo?!? Wie in welchem Ordner kann ich navigieren und sehenid_rsa.pub
undid_rsa
? (2) Ich dachte,ssh-add
es wäre der Befehl zum Hinzufügen eines öffentlichen Schlüssels zuauthorized_keys
, nein? Was ist der Unterschied zwischenssh-copy-id
undssh-add
? Danke noch einmal!~/.ssh/id_rsa
re '2', ssh-add ist nicht zum Hinzufügen zu autorisierten Schlüsseln gedacht, sondern zum Hinzufügen zu einem Schlüsselbund. Ich habe ssh nicht verwendet -add obwohl. ssh-add hat damit zu tun, dass Sie nicht jedes Mal eine Schlüsselphrase eingeben müssen, wenn Sie einen Schlüssel verwenden, für den eine Schlüsselphrase erforderlich ist. Wenn für Ihre SSH-Schlüssel keine Schlüsselphrase erforderlich ist, gibt es vermutlich keinen Grund, SSH-Add zu verwenden, und ich denke, Sie müssen weiterhin SSH-Copy-ID verwenden oder den öffentlichen Schlüssel manuell kopieren Authorized_keysJa
B benötigt jedoch den öffentlichen Schlüssel von A, der in der Datei "authorized_keys" von B aufgeführt ist, damit A eine Verbindung zu B herstellen kann
Sie können auch id_rsa.pub und ssh nach B löschen und es funktioniert weiterhin, da der öffentliche Schlüssel bei jeder ssh-Verbindung neu generiert und in keinem id_rsa.pub gespeichert wird
Handbuch - so etwas wie
von einem-
oder noch mehr manuell, um den Befehl aufzuschlüsseln
A $
cat id_rsa.pub | ssh user@host 'cat>~/a.a'
Stellen Sie dann auf B sicher, dass ~ / .ssh vorhanden ist, und tun Sie dies
cat a.a >> ~/.ssh/authorized_keys
und Sie können autorisierte_Tasten von B vorher und nachher katzen, um sicherzustellen, dass der Schlüssel aufgelistet ist.
Oder Sie können id_rsa.pub per E-Mail an ein E-Mail-Konto senden. Von B aus kann B die E-Mail abrufen und den Inhalt von id_rsa.pub an seine Datei "authorized_keys" anhängen
automatisch
Der Befehl ssh-copy-id
Sie müssen in der Lage sein, ssh einzutragen, daher benötigen Sie einen Kennwortzugriff
Anstatt ssh user @ host zu machen, machst du ssh-copy-id user @ host und du wirst zur Eingabe eines Passworts aufgefordert, du gibst es ein, du bist dabei, es wird den öffentlichen Schlüssel kopieren. Und wenn Sie das nächste Mal ssh user @ host ausführen, wird der Schlüssel verwendet.
B's ~ / .ssh / autorisierte_Tasten
Nun, ich weiß nicht viel darüber, aber was auch immer mit einem Schlüssel verschlüsselt ist, kann mit dem anderen Schlüssel entschlüsselt werden, und sich zu identifizieren ist ein bisschen anders als das Senden von Daten. Und es kann etwas geben über einen temporären Schlüssel auch.
quelle