Kopieren Sie SSH Private Keys auf einen anderen Computer

52

Ich muss einen anderen Computer verwenden, um auf meinen SSH-Server zuzugreifen. Dies liegt daran, dass ein kürzlich an meiner Universität implementierter VPN auf meinem aktuellen Computer nicht funktioniert und ich den Zugriff auf den Server verloren habe.

Ich ssh über verschlüsselte SSH-Schlüssel. Kann ich diese Schlüssel auf den neuen Computer kopieren (auf dem der VPN funktioniert)? Ich habe versucht, die id_rsaund id_rsa.pub-Dateien in den ~/.sshOrdner zu kopieren, aber der Ordner erkennt die Schlüssel nicht und es wird nicht aufgefordert, ein Kennwort einzugeben, um die Schlüssel zu entschlüsseln.

BEARBEITEN: Ich kann nicht auf den Server zugreifen, um ein neues Schlüsselpaar für den neuen Computer zu generieren. Ich bin nicht im Ausland und kann physisch nicht darauf zugreifen.

Vielen Dank.

benj
quelle
Ist " id_rsh" ein Tippfehler?
ændrük,
1
Sie können mehr über das Problem erfahren, indem Sie es versuchen ssh -v -i ~/.ssh/id_rsa ssh-server.
ændrük,
habe das versucht. Es scheint die Schlüssel zu senden, fragt aber nie nach einem Passwort, um sie zu entschlüsseln. Ich erhalte auch die seltsame generische Meldung "Roaming vom Server nicht erlaubt". Ratet mal, private Schlüssel sollen einfach nicht kopiert werden;). Es sieht so aus, als müsste ich nur jemandem mit physischem Zugriff vertrauen, um mich manuell bei meinem Server anzumelden und die SSH-Einstellungen zu ändern. Danke für Ihre Hilfe.
benj
Private Schlüssel sollten niemals kopiert werden! DAS IST EIN SICHERHEITSRISIKO. Generiere neue Schlüssel für jedes neue Gerät !!!!
Ether

Antworten:

66

Überprüfen Sie die Berechtigungen und den Besitz Ihrer privaten Schlüsseldatei. Aus dem Handbuch ,

Diese Dateien enthalten vertrauliche Daten und sollten für den Benutzer lesbar, für andere jedoch nicht zugänglich sein (Lesen / Schreiben / Ausführen). ssh ignoriert einfach eine private Schlüsseldatei, wenn andere darauf zugreifen können.

Normalerweise sollten die Schlüsseldateien so aussehen:

$ ls -l ~/.ssh/id_rsa*
-rw------- 1 benj benj 1766 Jun 22  2011 .ssh/id_rsa
-rw-r--r-- 1 benj benj  388 Jun 22  2011 .ssh/id_rsa.pub

was Sie erzwingen können über:

$ chown benj:benj ~/.ssh/id_rsa*
$ chmod 600 ~/.ssh/id_rsa
$ chmod 644 ~/.ssh/id_rsa.pub
ændrük
quelle
2
Vielen Dank. Das ist nützlich zu wissen. Wenn Sie eine Datei auf einen anderen Computer kopieren, scheinen sich die Berechtigungen für diesen Benutzer zu ändern. Ich habe die Skripte chmod und chown für den Fall ausgeführt. Leider hat es meinem Problem nicht geholfen.
benj
@ John ツ das könnte ein Teil des Problems für mich gewesen sein, aber es schien andere Probleme zu geben. Ich habe irgendwann jemanden dazu gebracht, sich physisch am Server anzumelden und einen neuen Schlüssel einzurichten. Aber ich werde das akzeptieren, da es wahrscheinlich ein Schlüsselproblem abdeckt.
benj
Es hat bei mir funktioniert, @benj.
Sinthia V
14

Versuchen Sie es, ssh-addbevor Sie SSH auf dem Server ausführen. Anschließend müssen Sie zur Eingabe des Kennworts aufgefordert werden. Bei nachfolgenden sshVerbindungen können Sie Ihren privaten Schlüssel verwenden.

Der ssh-addBefehl fügt die Schlüssel zum Schlüsselagenten hinzu.

gertvdijk
quelle
1
Ich glaube nicht, dass dies das Problem ist, da 1) der SSH-Client ohne einen funktionalen Schlüsselagenten zurechtkommt, 2) der Server nicht mit der Nachricht "Roaming nicht erlaubt" antwortet und 3) der SSH-Client seine eigene hat Fehlermeldung beim Sprechen mit dem Schlüsselagenten schlägt in irgendeiner Weise fehl. Ich habe meine Gedanken zu einer Antwort gemacht .
Gertvdijk
Dies hat das Problem für mich behoben. Siehe dazu auch die Github-Dokumentation .
Ionică Bizău
8

Verschlüsselte private Schlüssel enthalten den entsprechenden öffentlichen Schlüssel unverschlüsselt . Auf diese Weise kann der SSH-Client eine Verbindung zum Remote-Server herstellen, ohne Sie nach dem Kennwort zu fragen (es wird zu diesem Zeitpunkt nur der öffentliche Teil angeboten). Wann immer der Server den öffentlichen Schlüssel akzeptiert, möchte der Client auf Ihrem PC den privaten Schlüssel entschlüsseln und fragt Sie nach der Passphrase.

Wenn der Server jetzt nur eine Verbindung von einer bestimmten IP-Adresse akzeptiert, wird dies bereits im ersten Schritt abgelehnt und die Meldung erklärt, die Sie vom Server "Roaming nicht vom Server erlaubt" erhalten haben.

Ich vermute also, dass Ihr Server in irgendeiner Weise eingeschränkt ist, um nur bestimmte IP-Adressen für diesen Schlüssel zuzulassen. Sie können dies auf verschiedene Arten tun, dies ist jedoch in folgenden Fällen üblich ~/.ssh/authorized_keys:

from="192.168.1.2" ssh-rsa AAAAB3NzaC[...]

Um zu beweisen, dass Sie den öffentlichen Schlüssel aus einem verschlüsselten privaten Schlüssel ohne Kennwort lesen können, führen Sie Folgendes aus:

ssh-keygen -y -f /path/to/private/key
gertvdijk
quelle
1
Dies ist ein guter hilfreicher Prozess, um eine Antwort zu erhalten, wenn Sie ein Problem mit der SSH-Verbindung haben. Danke.
Sinthia V