it-swarm.com.de

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

Ich habe einen automatischen Build-Service, der von einem privaten git-Repository herunterlädt .. Das Problem besteht darin, dass beim Klonen des Repositorys das Kennwort angegeben werden muss, da es nicht gespeichert wird. Da es keine menschliche Interaktion gibt, wartet das Passwort ewig. Wie kann ich es erzwingen, dass es sich aus id_rsa.pub erinnert?

121
D.Giunchi

Für Windows-Benutzer ist nur ein Hinweis darauf zu beachten, dass ich die Git Bash-Umgebung so einrichte, dass sie mich beim Start von einmal anmeldet. Ich bearbeite meine ~/.bashrc:

 eval `ssh-agent` 
 ssh-add 

Wenn ich Git Bash starte, sieht es so aus:

Willkommen bei Git (Version 1.7.8-preview20111206) 
 (Etc) 
 Agent pid 3376 
 Geben Sie die Passphrase für /c/Users/starmonkey/.ssh/id_dsa:
Identity ein: /c/Users/starmonkey/.ssh/id_dsa (/c/Users/starmonkey/.ssh/id_dsa)

Und jetzt kann ich ssh zu anderen Servern machen, ohne mich jedes Mal einloggen zu müssen.

Ich weiß, dass dies eine alte Frage ist, aber ich bin heute von einer Google-Suche hierher gekommen, also hoffe ich, dass dies für andere hilfreich ist.

248
starmonkey

Diese Antwort erläutert, wie der GitHub-Benutzername und das Kennwort dauerhaft gespeichert werden, nicht die Passphrase für den SSH-Schlüssel.

Führen Sie in Windows einfach .__ aus. $ git config --global credential.helper wincred

Das bedeutet, dass Sie beim nächsten Push wie üblich Ihren Benutzernamen und Ihr Kennwort eingeben. Diese werden jedoch in Windows-Anmeldeinformationen gespeichert. Danach müssen Sie sie nicht erneut eingeben.

Wie in http://www.tilcode.com/Push-github-ohne- Eingabe-benutzername-kennwort-fenster-git-bash/

61

Ich ziehe es vor, meine ssh-Passphrase beim Öffnen neuer Terminals nicht eingeben zu müssen. Die Lösung von starmonkey erfordert leider, dass das Kennwort in jeder Sitzung eingegeben wird. Stattdessen habe ich dies in meinem .bash_profile:

# 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

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

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

Update 07/01/2019: Ich denke nicht, dass dies alles notwendig ist. Ich habe jetzt durchgehend dafür gesorgt, dass mein .bash_profile den ssh-agent ausführt:

eval $(ssh-agent)

Dann habe ich eine ssh-Konfigurationsdatei wie folgt eingerichtet:

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

Hoffe das hilft.

6
Conan

Wenn ich die Frage richtig verstanden habe, verwenden Sie bereits einen autorisierten SSH-Schlüssel im Build Service. Sie möchten jedoch nicht, dass Sie die Passphrase für jeden Klon eingeben müssen.

Ich kann mir zwei Wege vorstellen, dies zu tun:

  1. Wenn Ihr Build Service interaktiv gestartet wird: Starten Sie ssh-agent mit einem ausreichend langen Timeout (Option -t), bevor Sie den Build Service starten. Verwenden Sie dann ssh-add (msysGit sollte diese), um alle privaten Schlüssel hinzuzufügen, die Sie benötigen, bevor Sie den Build-Service starten. Sie müssen immer noch alle Passphrasen eingeben, jedoch nur einmal pro Dienststart.

  2. Wenn Sie vermeiden möchten, die Passphrasen überhaupt eingeben zu müssen, können Sie die Passphrasen immer aus den SSH-Schlüsseln entfernen, wie in https://serverfault.com/questions/50775/how-do-i-change- beschrieben. my-private-key-passphrase , indem Sie eine leere neue Passphrase festlegen. Die Aufforderung zur Kennworteingabe sollte hierdurch vollständig entfallen, sie ist jedoch noch weniger sicher als die vorherige Option.

4
millimoose

Was @starmonkey gesagt hat. Falls Sie verwirrt sind, was ~/.bashrc ist, überprüfen Sie diese SO - Antwort: Git für Windows: .bashrc oder gleichwertige Konfigurationsdateien für Git Bash Shell

1
narak

Wenn ich versuche, meinen Code zu drücken, wurde folgende Fehlermeldung angezeigt:

$ 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, erhielt ich die Aufforderung, meinen Benutzernamen und das Kennwort für git hub einzugeben. Nachdem Sie die korrekten Anmeldeinformationen angegeben haben, kann ich meinen Code verschieben.

1
Naushad Qamar

Die richtige Lösung ist:

  1. führen Sie Windows als Standard-Terminal-Cmd aus und rufen Sie das Verzeichnis Ihres Master-Profils auf 

echo %USERPROFILE%

  1. führen Sie GitBash im obigen Verzeichnis aus und erstellen Sie eine .bashrc-Datei mit dem Befehl

echo "" > .bashrc

  1. Öffnen Sie die .bashrc-Datei mit Ihrem bevorzugten Texteditor und fügen Sie Code aus der GitHub-Hilfe in diese Datei ein
 env = ~/.ssh/agent.env 
...
 VOLLSTÄNDIGEN CODE ÜBER URL KOPIEREN - Ich kann ihn nicht zu stackoverflow hinzufügen, da das Layout dadurch beschädigt wird ... OMG!.
  1. starten Sie GitBash neu und es fragt Sie nach Ihrem Passwort (nur beim ersten Mal) und fertig. Kein Passwort stört wieder.
0