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 Entschlüsseln des privaten Schlüssels jedes Mal eingegeben werden muss, wenn Git Bash unter Windows verwendet wird?
D. Giunchi
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
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
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
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:
-
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 benutzessh-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. -
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.
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
Peter Mortensen
Die richtige Lösung ist:
-
Führen Sie das Windows-Standardterminal – cmd aus und rufen Sie das Verzeichnis Ihres Masterprofils ab
echo %USERPROFILE%
-
Führen Sie Git Bash im obigen Verzeichnis aus und erstellen Sie die
.bashrc
Datei mit dem Befehlecho "" > .bashrc
-
Ö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!
-
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
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:
-
Das entsprechend
id_rsa
privater Schlüssel wird in präsentiert[email protected]:~/.shh/id_rsa
. -
Dieser Fingerabdruck von repo.server wird in der gespeichert
[email protected]:~/.ssh/known_hosts
Datei. Normalerweise wird dies nach dem ersten Versuch von getanssh
um sich mit dem zu verbindenrepo.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