Wie übertrage ich meine SSH-Schlüssel auf einen anderen Computer?


42

Ich habe Konten auf zwei Maschinen: H1 und H2. Ich habe ssh keys auf H1 erstellt und auf S1 installiert. Ich kann jetzt von H1 auf S1 ssh. Ich möchte dasselbe mit H2 machen. Wie installiere ich die in H1 und H2 generierten SSH-Schlüssel?


2
Da dies ssh-copy-idein Kinderspiel ist (kein Überschreiben vorhandener Schlüssel oder versehentliches Kopieren des privaten Schlüssels anstelle des öffentlichen Schlüssels) und eine weniger bekannte Lösung, sollten Sie in Betracht ziehen, eine dieser Antworten als akzeptierte Antwort zu akzeptieren.
Am

Antworten:


28

Bearbeitet: Wenn Sie beide Computer besitzen, können Sie Ihren privaten Schlüssel freigeben. Aber diese Lösung ist nicht sicher für Fall gestohlenen Notebooks oder für Maschinen , die Sie nicht besitzen.

Sie können Ihre privaten Schlüssel von H1 nach H2 kopieren, wenn Sie denselben privaten Schlüssel verwenden möchten, um sich von H2 nach S1 anmelden zu können. Wenn Sie in H1 die folgenden Befehle ausführen:

H1$ ssh H2 mkdir ~/.ssh
H1$ scp  ~/.ssh/id_rsa ~/.ssh/id_dsa H2:~/.ssh/

Warnung! Dies löscht und ersetzt jeden privaten Schlüssel, den Sie bei H2 hatten.

Besser ist es, neue private Schlüssel auf H2 ( ssh-keygen) zu generieren und deren öffentlichen Teil mit ssh-copy-idutil auf S1 zu installieren. In diesem sichereren Fall haben Sie zwei Schlüsselsätze. Eine ist für die Anmeldung bei H1-S1 und die zweite für die Anmeldung bei H2-S1. In S1 werden zwei öffentliche Schlüssel autorisiert. Und Sie können eines oder beide von ihnen widerrufen (zum Beispiel, wenn Ihr Notebook gestohlen wird oder der Besitzer des Geräts entscheidet, Ihr Konto zu deaktivieren und alle Ihre Dateien wiederzuverwenden).


8
Das Kopieren eines privaten Schlüssels ist wirklich keine gute Idee. Wenn Sie einen einzelnen Schlüssel an mehreren Standorten haben, 1. wird er anfälliger, 2. erhöht sich das Risiko, dass Sie die Kontrolle über alle Standorte verlieren, 3. können Sie den Zugriff nicht von nur einem Standort aus deaktivieren. Aus Sicherheitsgründen sollten Sie an jedem Standort ein neues Schlüsselpaar generieren - die Lösung von Mu Qiao.
Pabouk

27

Verwenden ssh-copy-id

ZUSAMMENFASSUNG

ssh-copy-id [-i [identitätsdatei]] [benutzer @] maschine

BESCHREIBUNG

ssh-copy-id ist ein Skript, das ssh verwendet, um sich bei einem Remote-Computer anzumelden und die angegebene Identitätsdatei an die Datei ~ / .ssh / authorized_keys dieses Computers anzuhängen.


1
@Ich möchte ssh von H2 nach S1 machen. Ich möchte meinen privaten und öffentlichen Schlüssel von H1 nach H2 übertragen und installieren. Wird das das tun?
Bruce

3
@ Bruce Nein, Sie müssen die Schlüssel auf h2 neu generieren und diesen Befehl verwenden, um Ihre Schlüssel zu kopieren. Ein anderer Ansatz besteht darin, h1 und h2 das Ausgangsverzeichnis gemeinsam nutzen zu lassen.
Mu Qiao

9

Verwenden Sie zwei private Schlüssel

Richten Sie H2 mit dem gleichen Prozess (aber nicht mit dem gleichen privaten Schlüssel) wie bei der Einrichtung von H1 ein:

  • Es gibt nie einen guten Grund, einen privaten Schlüssel von einem anderen Computer zu kopieren. Wenn Sie auf H2 noch keinen neuen privaten Schlüssel generiert haben, tun Sie dies jetzt. Generieren Sie auch den entsprechenden öffentlichen Schlüssel. In einem Terminal auf H2,

Art: ssh-keygen -t rsa

  • Kopieren Sie den öffentlichen Schlüssel Ihres H2 auf den Server. In einem Terminal auf H2,

Art: ssh-copy-id username@S1.net

(Verwenden Sie jedoch Ihren tatsächlichen Benutzernamen für S1 und den Hostnamen von S1 und geben Sie später Ihr Kennwort für S1 ein, wenn Sie dazu aufgefordert werden).

Dadurch wird der öffentliche Schlüssel Ihrer Workstation in die ~/.ssh/authorized_keysDatei für diesen Benutzer auf dem Server installiert .

  • Es gibt keinen Schritt 3. Von nun an können Sie sich von Ihrem H2 aus in den S1 und von Ihrem H1 aus in den S1 einloggen.

Einzelheiten

Ich gehe davon aus, dass das, was Sie wirklich fragen, ist

  • Ich habe einen Server ("S1")
  • Ich melde mich von meinem persönlichen Laptop ("H1") auf meinem Server an
  • Ich möchte mich auch von meiner Workstation ("H2") auf meinem Server anmelden.

Was ist der richtige Weg, um das zu tun?

  • Ich nehme an, ich könnte mich einfach von beiden Orten aus mit demselben Passwort einloggen. Das kann nicht der richtige Weg sein, da alle sagen, dass die Authentifizierung mit öffentlichen Schlüsseln viel besser ist als mit Passwörtern. (ein)
  • Ich nehme an, ich könnte einfach den privaten Schlüssel von meinem Laptop auf meine Workstation kopieren. Das kann nicht der richtige Weg sein, da jeder sagt, dass der private Schlüssel niemals den Client-Computer verlassen soll.

Die Leute haben es sich in den Kopf gesetzt, dass ein Konto auf einem Server einen einzigen Benutzernamen und natürlich ein einziges autorisiertes Passwort hat.

Public-Key-Systeme wie ssh sind besser als das Passwortsystem: Ein Konto auf einem Server verfügt über einen einzigen Benutzernamen und eine beliebige Anzahl von autorisierten öffentlichen Schlüsseln , die alle in der ~/.ssh/authorized_keysDatei aufgeführt sind.

( weitere Details ).


Vergib mir , dass ich mich wiederhole .
David Cary

0

Würde ssh-copy-id den Job für Sie erledigen: http://linux.die.net/man/1/ssh-copy-id ?


@Ich möchte ssh von H2 nach S1 machen. Ich möchte meinen privaten und öffentlichen Schlüssel von H1 nach H2 übertragen und installieren. Wird das das tun?
Bruce

2
Wenn Sie mit ssh-copy-id bei S1 oder H1 (die jetzt Ihren Schlüssel haben) angemeldet sind, können Sie Ihren öffentlichen (nicht privaten) Schlüssel auf den H2 übertragen. Im Allgemeinen ist es am besten, die Anzahl der Computer zu begrenzen, auf denen Ihr privater Schlüssel installiert ist. Versuchen Sie, es nur auf wenigen sicheren Maschinen zu verwahren, um den Verlust zu verhindern.

Wie kopiere ich meinen privaten Schlüssel nach H2?
Bruce

0

Zum Verschieben von SSH-Schlüsseln von einem Computer auf einen anderen. Kopieren Sie einfach den gesamten Ordner von ~ / .ssh von H1 (alte Maschine) in den ~ / .ssh-Inhaltsordner der neuen Maschine H2.

Versuchen Sie jetzt:

ssh ubuntu@13.123.43.26 (deine S1 ip)

Höchstwahrscheinlich erhalten Sie eine Berechtigungswarnung, um diesen Lauf zu korrigieren:

chmod 400 ~ / .ssh / id_rsa

Nun wieder:

ssh ubuntu@13.123.43.26 (deine S1 ip)

Es wird jetzt gut funktionieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.