1475 Stimmen

Wie kann ich die Passphrase für den SSH-Schlüssel entfernen, ohne einen neuen Schlüssel erstellen zu müssen?

Beim Erstellen eines neuen SSH-Schlüssels auf meinem Laptop habe ich eine Passphrase festgelegt. Aber wie ich jetzt feststelle, ist das ziemlich schmerzhaft, wenn man versucht, eine Übertragung durchzuführen ( Git y SVN ) zu einem entfernten Standort über SSH mehrmals in einer Stunde.

Eine Möglichkeit, die mir einfällt, ist, meine SSH-Schlüssel zu löschen und neue zu erstellen. Gibt es eine Möglichkeit, die Passphrase zu entfernen und trotzdem die gleichen Schlüssel zu behalten?

12 Stimmen

Ich denke, die richtige Antwort ist eigentlich die von Torsten Marek. Der ssh-agent-Trick könnte das sein, wonach Sie suchen, aber es ist eine Antwort auf eine andere Frage.

1 Stimmen

Die Passphrase ist nicht nur ein Schlüssel zum Entsperren des privaten SSH-Schlüssels, sondern ein Teil des Verschlüsselungsmechanismus. Ein Teil ist Ihr SSH-Schlüssel, der andere - die manuell eingegebene Passphrase. Nur wenn beide Teile korrekt sind, ist der zusammengesetzte Schlüssel, der aus ihnen im Handumdrehen erzeugt wird, gültig. Eine andere Passphrase entspricht also einem anderen SSH-Schlüssel (und keine Passphrase ist ein Sonderfall der "anderen Passphrase").

133 Stimmen

Die Beantwortung solcher Fragen ist so, als würde man darüber diskutieren, ob Seiteneffekte in Programmiersprachen erlaubt sein sollten, weil sie "rein" sind oder nicht. Puristen laufen immer Amok, während es den anderen egal ist, weil es eine hilfreiche Funktion ist und das Leben einfacher macht. ssh wird gebraucht, auch wenn es nicht unbedingt etwas mit Programmierung zu tun hat... schließen Sie solche Fragen nicht. :|

2677voto

Torsten Marek Punkte 78610

Kurze Antwort:

$ ssh-keygen -p

Daraufhin werden Sie aufgefordert, den Speicherort der Schlüsseldatei, die alte Passphrase und die neue Passphrase einzugeben (die leer gelassen werden kann, um keine Passphrase zu haben).


Wenn Sie alles in einer Zeile ohne Eingabeaufforderungen erledigen möchten, tun Sie dies:

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

Das ist wichtig: Beachten Sie, dass bei der Ausführung von Befehlen diese normalerweise in Ihrem ~/.bash_history Datei (o.ä.) im Klartext einschließlich aller Argumente (d.h. in diesem Fall die Passphrasen). Es wird daher empfohlen, die erste Option zu verwenden, es sei denn, Sie haben einen besonderen Grund, etwas anderes zu tun.

Beachten Sie jedoch, dass Sie weiterhin -f keyfile ohne angeben zu müssen -P ni -N und dass die Schlüsseldatei standardmäßig auf ~/.ssh/id_rsa In vielen Fällen ist sie also gar nicht erforderlich.

Sie können auch ssh-agent verwenden, das die Passphrase eine Zeit lang zwischenspeichern kann. Die neuesten Versionen von gpg-agent unterstützen auch das Protokoll, das von ssh-agent verwendet wird.

102voto

Karan Punkte 31

$ ssh-keygen -p hat für mich funktioniert

Geöffnete git bash. Eingefügt: $ ssh-keygen -p

Drücken Sie die Eingabetaste für den Standardspeicherort.

Alte Passphrase eingeben

Neue Passphrase eingeben - BLANK

Bestätigen Sie die neue Passphrase - BLANK

BOOM der Schmerz der Eingabe der Passphrase für Git Push war weg.

Danke!

49voto

mlambie Punkte 7406

Sie können folgendes zu Ihrem .bash_profile (oder äquivalent) hinzufügen, das ssh-agent bei der Anmeldung startet.

if [ -f ~/.agent.env ] ; then
    . ~/.agent.env > /dev/null
    if ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
        echo "Stale agent file found. Spawning new agent… "
        eval `ssh-agent | tee ~/.agent.env`
        ssh-add
    fi 
else
    echo "Starting ssh-agent"
    eval `ssh-agent | tee ~/.agent.env`
    ssh-add
fi

Bei einigen Linux-Distributionen (Ubuntu, Debian) können Sie das verwenden:

ssh-copy-id -i ~/.ssh/id_dsa.pub username@host

Dadurch wird die erzeugte ID auf einen entfernten Rechner kopiert und dem entfernten Schlüsselbund hinzugefügt.

Sie können mehr lesen ici y ici .

25voto

ccalvert Punkte 2828

Um die Passphrase zu ändern oder zu entfernen, finde ich es oft am einfachsten, nur die p y f Flaggen und lassen Sie mich dann vom System auffordern, die Passphrasen einzugeben:

ssh-keygen -p -f <name-of-private-key>

Zum Beispiel:

ssh-keygen -p -f id_rsa

Geben Sie ein leeres Passwort ein, wenn Sie die Passphrase entfernen möchten.

Ein Beispiellauf zum Entfernen oder Ändern eines Kennworts sieht in etwa so aus:

ssh-keygen -p -f id_rsa
Enter old passphrase: 
Key has comment 'bcuser@pl1909'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

Wenn Sie eine Passphrase zu einem Schlüssel hinzufügen, der keine Passphrase hat, sieht der Lauf etwa so aus:

ssh-keygen -p -f id_rsa
Key has comment 'charlie@elf-path'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

11voto

bbaassssiiee Punkte 5424

Auf der Mac können Sie die Passphrase für Ihren privaten ssh-Schlüssel in Ihrem Schlüsselbund speichern, was die Verwendung des Schlüssels transparent macht. Wenn Sie angemeldet sind, ist er verfügbar, wenn Sie abgemeldet sind, kann Ihr Root-Benutzer ihn nicht verwenden. Das Entfernen der Passphrase ist eine schlechte Idee, da jeder, der die Datei hat, sie verwenden kann.

ssh-keygen -K

Dies hinzufügen zu ~/.ssh/config

UseKeychain yes

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X