Wie kann man dafür sorgen, dass Git unter Windows nicht zur Eingabe einer Passphrase für den SSH-Schlüssel auffordert?

40

Ich verwende git bash und richte ssh key mit ssh-keygen ein und frage mich jedes Mal, wenn ich etwas mit einem Repo git mache, nach der Passphrase für /c/Users/jankiewj/.ssh/id_rsa. Gibt es eine Möglichkeit, diese Passphrase zu deaktivieren?

jcubic
quelle
Diese Seite auf serverfault hilft möglicherweise serverfault.com/questions/194567/…
@Radoo es hat nicht geholfen.
jcubic

Antworten:

55

Sie können dies in Git Bash ausführen:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

Im zweiten Befehl wird nach einer Passphrase gefragt, und das war's. Bei jeder zusätzlichen Aktion, die Sie ausführen müssen (für die einmal eine Passphrase erforderlich war), werden Sie nicht nach der Passphrase gefragt (siehe Beispiel in der Abbildung unten):

Hinzufügen einer Passphrase in Git Bash unter Windows

jcubic
quelle
7
Ich muss es erneut eingeben, sobald ich git bash schließe ... gibt es eine dauerhafte Lösung?
Black
@Schwarz, es ist pro Bash-Sitzung. Ich habe dies .bashrcso eingestellt , dass ich jedes Mal, wenn ich git bash öffne, die Eingabeaufforderung erhalte und für diese Sitzung bin ich bereit.
JCUBIC
Was genau setzen Sie in .bashrc ein? Und wo ist .bashrc?
Black
Edit: vergiss nicht, du musst die Datei selber erstellen, ~/.bashrcdann die Zeilen aus deinem Beitrag eintragen und speichern, das wars :) Danke!
Black
Anstatt die obigen Zeilen zu verwenden, insbesondere in .bashrc, würde ich ein Skript verwenden und es entweder in .bash_profileoder einfügen .profile. Hier ist ein Ausschnitt des Hauptteils von mir .bash_profile, der dieses Problem für alle lösen sollte, die noch nach einer Antwort suchen. Es ist ähnlich einer Antwort unten. Am Anfang des Skripts lade ich meine .bashrc, die, falls nicht zutreffend, einfach weggelassen werden. Hinweis: Sie müssen die Verweise auf id_rsaIhren privaten SSH-Schlüssel und möglicherweise auf den Pfad ändern .
Rockin4Life33
9

Eine etwas bessere und dauerhaftere Lösung besteht darin, den ssh-agent beim Öffnen der git bash unter Windows automatisch zu starten. Sie können das Folgende in Ihr .profile oder .bashrc kopieren / einfügen. Ich ziehe es vor, es auf das .profile zu setzen

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

Diese Lösung stammt aus diesem Github-Hilfeartikel

velval
quelle
Ich habe meinen einfachen Code in .bashrc, wie unterscheidet sich Ihre Lösung? Unter Windows Bash ist jede Shell unabhängig, sodass der Agent niemals ausgeführt wird, wenn Sie die Shell ausführen.
JCUBIC
Lösung funktioniert gut, indem Sie den Code in die .bashrc. Aufforderung zur Eingabe der ssh-Passphrase nur beim ersten Mal. Ich habe mein Leben gerettet. Vielen Dank.
Ben Asmussen
Danke, das ist sehr rettend für mein Leben.
Gumuruh
Dies sollte wirklich die akzeptierte Antwort sein, da es eine Lösung darstellt, die beständig ist und besser den Anforderungen des OP entspricht.
Richard D
Was kann ich tun, wenn ich beim Start versehentlich das falsche Passwort eingegeben habe? Bearbeiten: Basierend auf superuser.com/a/271673/647110 können Sie ssh-add -Dalle Schlüssel löschen.
Nils Guillermin
0

Ich bin nicht sicher, ob ich es empfehlen möchte, aber wenn Sie den Schlüssel erstellen und aufgefordert werden, ein Passwort festzulegen, drücken Sie einfach die Eingabetaste und überspringen Sie das Passwort.

Schauen Sie sich diesen Link an, um zu erfahren, wie Sie ihn verwenden ssh-keygen: https://help.github.com/articles/working-with-ssh-key-passphrases/

Vielleicht ssh-agentkann dir das irgendwie weiterhelfen. Aber nicht sicher, ohne Ihr aktuelles System zu kennen.

David Bern
quelle
4
Auf jeden Fall keine gute Antwort
Kennet Celeste
-3

Geben Sie diesen git-Befehl an Ihrem Repos-Speicherort " ssh-keygen -p " ein. Dadurch werden Sie aufgefordert, den Speicherort der Schlüsseldatei, die alte Passphrase und die neue Passphrase (die leer gelassen werden kann, um keine Passphrase zu haben) einzugeben. Geben Sie nichts in das neue Passwort ein, um die Passphrase zu entfernen

bharti
quelle
1
Ein leeres Kennwort zu hinterlassen ist unsicher und viele Unternehmensentwickler können aufgrund von Einschränkungen keine leere Passphrase verwenden. Es ist eine lahme Problemumgehung, keine Lösung für das OP-Problem.
cbaldan
lahm vielleicht, aber nur für den lokalen Gebrauch, Tasty and expeditious ™
Jim P