Wie kann verhindert werden, dass das Passwort zum Entschlüsseln des privaten Schlüssels jedes Mal eingegeben werden muss, wenn Git Bash unter Windows verwendet wird?

Lesezeit: 8 Minuten

Wie kann verhindert werden dass das Passwort zum Entschlusseln des
D. Giunchi

Ich habe einen automatischen Gebäudedienst, der aus einem privaten Git-Repository heruntergeladen wird. Das Problem ist, dass beim Versuch, das Repository zu klonen, das Passwort angegeben werden muss, da es nicht gespeichert wird. Da es also keine menschliche Interaktion gibt, wartet es für immer auf das Passwort. Wie kann ich es zwingen, sich von id_rsa.pub zu erinnern?

Wie kann verhindert werden dass das Passwort zum Entschlusseln des
Sternenaffe

Für Windows-Benutzer nur eine Anmerkung, dass ich auf diese Weise die Git Bash-Umgebung eingerichtet habe, um mich anzumelden Einmal wenn ich es starte. Ich bearbeite meine ~/.bashrc Datei:

eval `ssh-agent`
ssh-add

Wenn ich also Git Bash starte, sieht es so aus:

Welcome to Git (version 1.7.8-preview20111206)
(etc)
Agent pid 3376
Enter passphrase for /c/Users/starmonkey/.ssh/id_dsa:
Identity added: /c/Users/starmonkey/.ssh/id_dsa (/c/Users/starmonkey/.ssh/id_dsa)

Und jetzt kann ich zu anderen Servern ssh, ohne mich jedes Mal anzumelden.

  • Wenn Sie keine ~/.bashrc-Datei haben, erstellen Sie einfach eine neue Textdatei (Notepad oder einen anderen Editor) und fügen Sie die beiden erwähnten Zeilen starmonkey hinzu.

    – pbz

    27. April 2012 um 3:03 Uhr

  • ‘~’ bezieht sich auf Ihr “Home-Verzeichnis”. Unter Windows können Sie dies finden, indem Sie eine Befehlsshell (cmd) öffnen und “echo %USERPROFILE%” eingeben.

    – Hawkeye Parker

    28. August 2012 um 23:56 Uhr

  • Bei mir funktioniert diese Syntax nicht. Ich musste schreiben eval $(ssh-agent) stattdessen.

    – Zusammenstoß

    27. Januar 2014 um 11:21 Uhr

  • Mein Problem war, dass ich die Datei angeben musste, die ssh-add verwenden soll. Wahrscheinlich, weil ich mehr als einen habe und nicht den Standardnamen verwendet habe. Beispiel ssh-add ~/.ssh/myfile_rsa

    – Syntax-Fehler

    30. Juni 2015 um 15:32 Uhr

  • copy > ~/.bashrc Ignorieren Sie den Fehler in Git Bash, um die Bashrc-Datei in Windows zu erstellen

    – Ruben

    30. Mai 2017 um 12:27 Uhr


1647281888 59 Wie kann verhindert werden dass das Passwort zum Entschlusseln des
Stephen Tun Aung

Diese Antwort erklärt, wie Sie den GitHub-Benutzernamen und das Passwort dauerhaft speichern können, nicht die Passphrase des SSH-Schlüssels.

Unter Windows einfach ausführen

$ git config --global credential.helper wincred

Dies bedeutet, dass Sie beim nächsten Drücken wie gewohnt Ihren Benutzernamen und Ihr Kennwort eingeben, diese jedoch in den Windows-Anmeldeinformationen gespeichert werden. Sie müssen sie danach nicht erneut eingeben.

Wie in, Auf GitHub pushen, ohne jedes Mal Benutzername und Passwort einzugeben (Git Bash unter Windows).

  • Nach diesem Befehl müssen Sie Ihren Benutzernamen und Ihr Passwort eingeben.

    – Stephen Tun Aung

    15. Februar 2016 um 8:00 Uhr

  • Bezieht sich dies auf SSH-Schlüssel oder nur auf die HTTPS-Authentifizierung (Benutzername und Passwort)? Die Frage scheint sich auf die Verwendung von SSH-Schlüsseln zu beziehen.

    – Sean

    2. Mai 2016 um 20:47 Uhr

  • Hat bei mir perfekt funktioniert, ich denke, ich verwende die HTTPS-Authentifizierung (Benutzername und Passwort).

    – Jonatan

    11. Juli 2016 um 13:47 Uhr


  • Wenn Sie dies ausführen, wird überhaupt keine Ausgabe erzeugt.

    – Benutzer9993

    18. Mai 2017 um 8:56 Uhr

  • @ user9993 Das wird es nicht. Da es sich um eine Konfigurationsänderung handelt, erfolgt zwar keine Ausgabe, git ändert sein Verhalten entsprechend der eingestellten Konfigurationsanweisung.

    – Starbeamrainbowlabs

    31. Juli 2017 um 9:33 Uhr

1647281888 496 Wie kann verhindert werden dass das Passwort zum Entschlusseln des
Conan

Ich bevorzuge es, meine SSH-Passphrase beim Öffnen neuer Terminals nicht eingeben zu müssen; Leider erfordert die Lösung von Starmonkey, dass das Passwort für jede Sitzung eingegeben werden muss. Stattdessen habe ich dies in meinem .bash_profile Datei:

# Note: ~/.ssh/environment should not be used, as it
#       already has a different purpose in SSH.

env=~/.ssh/agent.env

# Note: Don't bother checking SSH_AGENT_PID. It's not used
#       by SSH itself, and it might even be incorrect
#       (for example, when using agent-forwarding over SSH).

agent_is_running() {
    if [ "$SSH_AUTH_SOCK" ]; then
        # ssh-add returns:
        #   0 = agent running, has keys
        #   1 = agent running, no keys
        #   2 = agent not running
        ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
    else
        false
    fi
}

agent_has_keys() {
    ssh-add -l >/dev/null 2>&1
}

agent_load_env() {
    . "$env" >/dev/null
}

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

if ! agent_is_running; then
    agent_load_env
fi

# If your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need
# to paste the proper path after ssh-add
if ! agent_is_running; then
    agent_start
    ssh-add
elif ! agent_has_keys; then
    ssh-add
fi

unset env

Dadurch wird meine Passphrase auch für neue Terminalsitzungen gespeichert. Ich muss es nur einmal eingeben, wenn ich nach dem Booten mein erstes Terminal öffne.

Ich möchte loben, woher ich das habe; es ist eine Modifikation der Arbeit eines anderen, aber ich kann mich nicht erinnern, woher es kam. Danke anonymer Autor!

Aktualisierung 01.07.2019: Ich glaube nicht, dass das alles nötig ist. Ich habe jetzt konsequent diese Arbeit, indem ich meine sicherstelle .bash_profile Datei führt den SSH-Agenten aus:

eval $(ssh-agent)

Dann habe ich eine eingerichtet ssh Konfigurationsdatei wie folgt:

touch ~/.ssh/config
chmod 600 ~/.ssh/config
echo 'AddKeysToAgent yes' >> ~/.ssh/config

  • Ich werde immer noch jedes Mal nach meiner Passphrase gefragt.

    – Ryan

    20. Januar 2017 um 14:15 Uhr

  • @Ryan hoffentlich wird das Update, das ich gerade hinzugefügt habe, Ihr Problem lösen. Ich halte die Infos in einem Blogbeitrag auf aktuell conan.is/blogging/clojure-on-windows.htmlund ich habe die gleiche Frage selbst unter stackoverflow.com/questions/52423626/… gestellt.

    – Conan

    7. Januar 2019 um 10:32 Uhr


  • @Conan Die aktualisierte Lösung funktioniert pro Bash-Sitzung. Nachdem ich meine laufende Bash-Sitzung geschlossen und eine neue geöffnet hatte, wurde ich erneut zur Eingabe des Passworts aufgefordert.

    – Tushar Raj

    7. Februar 2019 um 6:52 Uhr

1647281889 336 Wie kann verhindert werden dass das Passwort zum Entschlusseln des
Millielch

Wenn ich die Frage richtig verstehe, verwenden Sie bereits einen autorisierten SSH-Schlüssel im Build-Dienst, möchten aber vermeiden, die Passphrase für jeden Klon eingeben zu müssen?

Dazu fallen mir zwei Möglichkeiten ein:

  1. Wenn Ihr Build-Service interaktiv gestartet wird: Bevor Sie den Build-Service starten, starten Sie ssh-agent mit ausreichend langem Timeout (-t Möglichkeit). Dann benutze ssh-add (msysGit sollte diese haben), um alle privaten Schlüssel hinzuzufügen, die Sie benötigen, bevor Sie Ihren Build-Service starten. Sie müssten immer noch alle Passphrasen eingeben, aber nur einmal pro Dienststart.

  2. Wenn Sie das Abtippen der Passphrasen vermeiden möchten, können Sie die Passphrasen jederzeit aus den SSH-Schlüsseln entfernen, wie in beschrieben https://serverfault.com/questions/50775/how-do-i-change-my-private-key-passphrase, indem Sie eine leere neue Passphrase festlegen. Dies sollte die Passwortabfrage vollständig beseitigen, ist aber noch unsicherer als die vorherige Option.

Wie kann verhindert werden dass das Passwort zum Entschlusseln des
Naushad Qamar

Als ich versuchte, meinen Code zu pushen, erhielt ich den folgenden Fehler:

$ git push origin dev

remote: Too many invalid password attempts. Try logging in through the website with your password.
fatal: unable to access 'https://[email protected]/xxxx/xxxx-api.git/': The requested URL returned error: 403

Nach ein paar Stunden Recherche habe ich festgestellt, dass ich den folgenden Befehl verwenden muss:

$ git config --global credential.helper cache

Nachdem ich den obigen Befehl ausgeführt hatte, wurde ich aufgefordert, meinen GitHub-Benutzernamen und mein Passwort einzugeben. Nachdem ich die richtigen Anmeldeinformationen angegeben habe, kann ich meinen Code übertragen.

  • Dies hat gerade “git: ‘credential-cache’ is not a git command” generiert. “git config –global credential.helper store” hat jedoch funktioniert – dies ist vielleicht nicht das Beste, aber ich bin gezwungen, HTTPS anstelle meines bevorzugten SSH zu verwenden, und möchte nur, dass es funktioniert.

    – Terry Braun

    30. Mai 2018 um 20:05 Uhr

1647281889 471 Wie kann verhindert werden dass das Passwort zum Entschlusseln des
Peter Mortensen

Die richtige Lösung ist:

  1. Führen Sie das Windows-Standardterminal – cmd aus und rufen Sie das Verzeichnis Ihres Masterprofils ab

    echo %USERPROFILE%
    
  2. Führen Sie Git Bash im obigen Verzeichnis aus und erstellen Sie die .bashrc Datei mit dem Befehl

    echo "" > .bashrc
    
  3. Öffne das .bashrc Datei mit Ihrem bevorzugten Texteditor und fügen Sie sie ein Code aus der GitHub-Hilfe in diese Datei:

    env=~/.ssh/agent.env
    ...
    COPY WHOLE CODE FROM URL - I can't add it to Stack Overflow because it breaks layout... OMG!
    
  4. Starten Sie Git Bash neu und es fragt Sie nach Ihrem Passwort (nur beim ersten Mal) und fertig. Kein störendes Passwort mehr.

  • Dies hat gerade “git: ‘credential-cache’ is not a git command” generiert. “git config –global credential.helper store” hat jedoch funktioniert – dies ist vielleicht nicht das Beste, aber ich bin gezwungen, HTTPS anstelle meines bevorzugten SSH zu verwenden, und möchte nur, dass es funktioniert.

    – Terry Braun

    30. Mai 2018 um 20:05 Uhr

1647281889 471 Wie kann verhindert werden dass das Passwort zum Entschlusseln des
Peter Mortensen

Sie müssen die erstellen authorized_keys Datei unter der .ssh Ordner des Benutzers, unter dem Sie sich mit dem Repository-Server verbinden werden. Angenommen, Sie verwenden den Benutzernamen buildservice an repo.server Du kannst rennen:

cd ~buidservice
mkdir ./ssh
cat id_rsa.pub >> .ssh/authorized_keys

Dann müssen Sie folgende Dinge überprüfen:

  1. Das entsprechend id_rsa privater Schlüssel wird in präsentiert [email protected]:~/.shh/id_rsa.

  2. Dieser Fingerabdruck von repo.server wird in der gespeichert [email protected]:~/.ssh/known_hosts Datei. Normalerweise wird dies nach dem ersten Versuch von getan ssh um sich mit dem zu verbinden repo.server.

  • Ich vergesse zu sagen. Unter Windows wäre Ihr Home-Verzeichnis wahrscheinlich C:\Benutzer\Benutzername

    – Beduine

    20. April 2011 um 9:51 Uhr

  • Mmm .. Git bash hat alles, lesen Sie den Titel der Frage sorgfältiger. Auch aus der Frage ging ich davon aus, dass das Schlüsselpaar bereits generiert wurde (weil gefragt wurde, wie der Repo-Server gezwungen werden kann, sich an id_rsa.pub zu erinnern.) Entschuldigung für die Formatierung.

    – Beduine

    20. April 2011 um 9:56 Uhr


  • Ok, noch nie von ‘git bash’ gehört. Entschuldigen Sie

    – sehen

    20. April 2011 um 9:58 Uhr

  • Ich gehe davon aus, dass dies msysgit verwendet. Ich füge das Tag hinzu.

    – Adam Dymitruk

    21. April 2011 um 7:03 Uhr

  • Warnung! Verwenden cat id_rsa.pub > .ssh/authorized_keys überschreibt alle vorhandenen autorisierten Schlüssel. Verwenden >> hinzufügen statt überschreiben.

    – David Pärsson

    23. Oktober 2016 um 11:30 Uhr


1002670cookie-checkWie kann verhindert werden, dass das Passwort zum Entschlüsseln des privaten Schlüssels jedes Mal eingegeben werden muss, wenn Git Bash unter Windows verwendet wird?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy