Wenn Sie SSH und Ihr privater Schlüssel verwenden wird mit einem Passwort verschlüsseln, dann werden Sie noch aufgefordert, das Passwort / Passwort für den privaten Schlüssel einzugeben , wenn Sie den Netzwerkbetrieb mit Git tun wie push
, pull
, und fetch
.
Verwenden Sie ssh-agent, um die Passphrase / das Kennwort für den privaten Schlüssel zu speichern
Wenn Sie vermeiden möchten, dass Sie Ihre Passphrase jedes Mal eingeben müssen, können Sie ssh-agent
Ihre Passphrase-Anmeldeinformationen für den privaten Schlüssel einmal pro Terminalsitzung speichern, wie in meiner Antwort auf Konnte keine Verbindung zu Ihrem Authentifizierungsagenten hergestellt werden :
$ eval `ssh-agent -s`
$ ssh-add
In einem Windows-Msysgit-Bash müssen Sie die Ausgabe von auswerten ssh-agent
, aber ich bin mir nicht sicher, ob Sie dies auch in anderen Entwicklungsumgebungen und Betriebssystemen tun müssen.
ssh-add
Sucht in Ihrem Home- .ssh
Ordner nach einem privaten Schlüssel mit id_rsa
dem Namen "Standard". Dies ist jedoch der Standardname. Sie können jedoch einen Dateipfad an einen Schlüssel mit einem anderen Namen übergeben.
Den Agenten töten
Wenn Sie mit Ihrer Terminalsitzung fertig sind, können Sie ssh-agent
mit dem Kill-Flag herunterfahren -k
:
$ ssh-agent -k
Wie im ssh-agent
Handbuch erklärt :
-k
Beenden Sie den aktuellen Agenten (angegeben durch die Umgebungsvariable SSH_AGENT_PID).
Optionales Timeout
Es kann auch einen optionalen Timeout-Parameter wie folgt annehmen:
$ ssh-add -t <timeout>
wo <timeout>
ist das Format <n>h
für <n>
Stunden, <n>m
für <n>
Minuten, und so weiter.
Nach dem ssh-agent
Handbuch :
-t life
Legen Sie einen Standardwert für die maximale Lebensdauer der dem Agenten hinzugefügten Identitäten fest. Die Lebensdauer kann in Sekunden oder in einem in sshd_config (5) angegebenen Zeitformat angegeben werden . Eine für eine Identität mit ssh-add (1) angegebene Lebensdauer überschreibt diesen Wert. Ohne diese Option ist die maximale Standardlebensdauer für immer.
Weitere Zeitformate finden Sie auf dieser Seite .
Sicherheitswarnung für Cygwin-Benutzer
Cygwin-Benutzer sollten sich eines potenziellen Sicherheitsrisikos bei der Verwendung von ssh-agent in Cygwin bewusst sein :
Personen sollten sich der potenziellen Gefahren von ssh-agent unter Cygwin 1 bewusst sein , obwohl es unter einem lokalen Netstat und Remote-Portscan nicht so aussieht, als ob der in / tmp / ssh-foo angegebene Port für jedermann zugänglich ist ...?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
Und unter dem zitierten Link :
Beachten Sie jedoch, dass die Unix-Domain-Sockets von Cygwin grundsätzlich unsicher sind. Daher rate ich dringend von der Verwendung von ssh-agent unter Cygwin ab.
Wenn Sie ssh-agent unter Cygwin ausführen, wird ein AF_UNIX-Socket im /tmp/ssh-$USERNAME/
Verzeichnis erstellt. Unter Cygwin werden AF_UNIX-Sockets über AF_INET-Sockets emuliert. Sie können dies leicht erkennen, wenn Sie die /tmp/ssh-$USERNAME/agent-socket-*
Datei über den Editor untersuchen. Du wirst so etwas sehen
!<socket >2080
dann renn netstat -a
und überrasche! Sie haben ein Programm, das Port 2080 abhört. Es ist ssh-agent. Wenn ssh eine RSA-Abfrage vom Server empfängt, bezieht es sich auf eine entsprechende /tmp/ssh-$USERNAME/agent-socket-*
(in unserem Fall unter Cygwin bedeutet dies, dass die Verbindung zu geöffnet wird localhost:2080
) und fordert ssh-agent auf, die RSA-Abfrage mit dem vorhandenen privaten Schlüssel zu verarbeiten, und dann Es leitet einfach die vom SSH-Agenten empfangene Antwort an den Server weiter.
Unter Unix funktioniert ein solches Szenario problemlos, da der Unix-Kernel die Berechtigungen überprüft, wenn das Programm versucht, auf einen AF_UNIX-Socket zuzugreifen. Bei AF_INET-Sockets sind die Verbindungen jedoch anonym (lesen Sie "unsicher"). Stellen Sie sich vor, Sie haben den Cygwin-SSH-Agenten ausgeführt. Ein böswilliger Hacker kann Ihre Box portieren, den von ssh-agent verwendeten offenen Port suchen, eine Verbindung zu Ihrem SSH-Server herstellen, die RSA-Abfrage von ihm empfangen, sie über einen von ihm gefundenen offenen Port an Ihren ssh-Agenten senden und den empfangen RSA-Antwort, senden Sie es an den SSH-Server und voila, er / sie hat sich erfolgreich als Sie bei Ihrem Server angemeldet.