it-swarm.com.de

Warum kann sich git meine Passphrase unter Windows nicht merken?

Ich habe gerade angefangen, git zu verwenden und kann mich nicht mehr an meine Passphrase erinnern. Ich verwende cmd.exe mit erhöhten Rechten und mein git-Host ist github, und ich habe einen SSH-Schlüssel wie diesen Leitfaden für github erstellt

aber ich verstehe immer noch

*\subnus.mvc>git Push Origin master
Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa':
125
Nesizer

Mir ist klar, dass diese Frage bereits zwei Jahre alt ist, aber ich hatte das gleiche Problem und mehrere Antworten hier haben die Frage für mich nicht vollständig beantwortet. Hier finden Sie zwei schrittweise Lösungen, je nachdem, ob Sie TortoiseGit zusätzlich zu msysgit verwenden oder nicht.

Erste Lösung Nimmt Windows, msysgit und PuTTY an.

  1. Installieren Sie msysgit und PuTTY wie angewiesen.
  2. (Optional) Fügen Sie PuTTY zu Ihrem Pfad hinzu. (Andernfalls muss den Verweisen auf PuTTY-Befehle der vollständige Pfad zur entsprechenden ausführbaren Datei vorangestellt werden.)
  3. Wenn Sie dies noch nicht getan haben, generieren Sie einen Key-Hash, wie bei GitHub oder von Ihrem Git-Host angewiesen.
  4. Wenn Sie dies noch nicht getan haben, konvertieren Sie Ihren Schlüssel zur Verwendung mit PuTTYs pageant.exe mit puttygen.exe . Anweisungen finden Sie in der PuTTY-Dokumentation, in dieser hilfreichen Anleitung und an verschiedenen anderen Stellen im Cyberspace.
  5. Führen Sie PuTTYs pageant.exe aus, öffnen Sie Ihre PPK-Datei ("Add Key") und geben Sie Ihre Passphrase für Ihren Schlüssel ein.
  6. Öffnen Sie das Windows-Dialogfeld für Umgebungsvariablen (Klicken Sie mit der rechten Maustaste auf "Computer", klicken Sie auf "Eigenschaften", klicken Sie auf "Erweiterte Systemeinstellungen" oder auf die Registerkarte "Erweitert", klicken Sie auf "Umgebungsvariablen"). Fügen Sie die folgende Umgebungsvariable hinzu:

    GIT_SSH = C:\full\path\to\plink.exe

    Ersetzen Sie "C:\full\path\to" durch den vollständigen Installationspfad zu PuTTY, in dem sich plink.exe befindet. Es ist wahrscheinlich am besten, es dem Abschnitt "Benutzervariablen" hinzuzufügen. Stellen Sie außerdem sicher, dass der Pfad, den Sie für plink.exe verwenden, mit dem Pfad übereinstimmt, den Sie für Pageant (pageant.exe) verwenden. In einigen Fällen haben Sie möglicherweise mehrere Installationen von PuTTY, da PuTTY möglicherweise zusammen mit anderen Anwendungen installiert wird. Wenn Sie plink.exe von einer Installation aus und pageant.exe von einer anderen verwenden, kann dies zu Problemen führen.

  7. Öffnen Sie eine Eingabeaufforderung.

  8. Wenn Sie versuchen, eine Verbindung zu einem bei Github.com gehosteten Git-Repository herzustellen, führen Sie den folgenden Befehl aus:

    plink.exe [email protected]

    Wenn das Git-Repository, zu dem Sie eine Verbindung herstellen möchten, an einer anderen Stelle gehostet wird, ersetzen Sie [email protected] durch einen entsprechenden Benutzernamen und eine entsprechende URL. (Github vorausgesetzt) ​​Sie sollten informiert werden, dass der Host-Schlüssel des Servers nicht zwischengespeichert ist, und gefragt werden, ob Sie ihm vertrauen. Antworten Sie mit einem y . Dadurch wird der Host-Schlüssel des Servers zur Liste der bekannten Hosts von PuTTY hinzugefügt. Ohne diesen Schritt funktionieren Git-Befehle nicht richtig. Nachdem Sie die Eingabetaste gedrückt haben, informiert Sie Github darüber, dass Github keinen Shell-Zugriff bietet. Das ist in Ordnung ... wir brauchen es nicht. (Wenn Sie eine Verbindung zu einem anderen Host herstellen und Ihnen Shell-Zugriff gewährt, ist es wahrscheinlich am besten, die Verbindung zu beenden, ohne etwas anderes zu tun.)

  9. Alles erledigt! Git-Befehle sollten jetzt über die Befehlszeile funktionieren. Möglicherweise möchten Sie pageant.exe haben Laden Sie Ihre PPK-Datei automatisch beim Booten , je nachdem, wie oft Sie sie benötigen.

Zweite Lösung Nimmt Windows, msysgit und TortoiseGit an.

TortoiseGit wird mit PuTTY-Programmen und einer speziell modifizierten Version von plink (TortoisePlink.exe) geliefert, die die Arbeit erleichtern wird.

  1. Installieren Sie msysgit und TortoiseGit wie angewiesen.
  2. Wenn Sie dies noch nicht getan haben, generieren Sie einen Key-Hash, wie bei GitHub oder von Ihrem Git-Host angewiesen.
  3. Wenn Sie dies noch nicht getan haben, konvertieren Sie Ihren Schlüssel zur Verwendung mit TortoiseGits pageant.exe mit TortoiseGits puttygen.exe . Anweisungen finden Sie in der PuTTY-Dokumentation, in der hilfreichen Anleitung, auf die in der ersten Lösung verwiesen wird, und an verschiedenen anderen Stellen im Cyberspace.
  4. Führen Sie TortoiseGits pageant.exe aus, öffnen Sie Ihre PPK-Datei ("Add Key") und geben Sie Ihre Passphrase für Ihren Schlüssel ein.
  5. Öffnen Sie das Windows-Dialogfeld für Umgebungsvariablen (Klicken Sie mit der rechten Maustaste auf "Computer", klicken Sie auf "Eigenschaften", klicken Sie auf "Erweiterte Systemeinstellungen" oder auf die Registerkarte "Erweitert", klicken Sie auf "Umgebungsvariablen"). Fügen Sie die folgende Umgebungsvariable hinzu:

    GIT_SSH = C:\full\path\to\TortoisePlink.exe

    Ersetzen Sie "C:\full\path\to" durch den vollständigen Installationspfad zu TortoiseGit, in dem TortoisePlink.exe gefunden wird. Es ist wahrscheinlich am besten, es dem Abschnitt "Benutzervariablen" hinzuzufügen. Stellen Sie außerdem sicher, dass der Pfad, den Sie zu TortoisePlink.exe verwenden, mit dem Pfad übereinstimmt, den Sie für Pageant (pageant.exe) verwenden. In einigen Fällen haben Sie möglicherweise mehrere Installationen von PuTTY, da PuTTY möglicherweise zusammen mit anderen Anwendungen installiert wird. Wenn Sie TortoisePlink.exe aus der TortoiseGit-Installation und pageant.exe aus einer anderen Installation einer anderen Anwendung (oder aus einer eigenständigen PuTTY-Installation) verwenden, treten wahrscheinlich Probleme auf.

  6. Alles erledigt! Git-Befehle sollten jetzt über die Befehlszeile funktionieren. Wenn Sie zum ersten Mal versuchen, eine Verbindung zu Ihrem Git-Repository herzustellen, werden Sie wahrscheinlich darüber informiert, dass der Host-Schlüssel des Servers nicht zwischengespeichert ist, und gefragt, ob Sie dem Server vertrauen. Klicken Sie auf "Ja". (Dies ist TortoisePlink.exe in Aktion.)

    Möglicherweise möchten Sie pageant.exe haben Laden Sie Ihre PPK-Datei automatisch beim Booten , je nachdem, wie oft Sie sie benötigen.

Dritte Lösung Nimmt Window, msysgit und native Eingabeaufforderung an.

  1. Installieren Sie msysgit
  2. Stellen Sie sicher, dass git in der MS-DOS-Eingabeaufforderung verwendet werden kann
  3. Lauf start-ssh-agent
  4. Geben Sie SSH-Passphrasen ein
  5. Alles erledigt! Git-Befehle sollten jetzt in der systemeigenen Eingabeaufforderung funktionieren.
196
RobertB

Weitere Informationen finden Sie auf dieser Seite: http://help.github.com/working-with-key-passphrases/

19
Franz

Falls Sie Git bash unter Windows können Sie Folgendes 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):

adding pass phrase in Git bash on Windows

Ich hoffe es hilft.

Prost,

Kerl.

12
Guy Avraham

Eine zusätzliche Lösung 5 Jahre, 8 Monate und 6 Tage nach dem Absenden der Frage wäre keine schlechte Idee.

HINWEIS: Angenommen, Sie verwenden einen Windows-Computer.

  1. Laden Sie den git-credential-winstore herunter.
  2. Starte es! Wenn Sie GIT in Ihrer Umgebungsvariablen PATH haben, sollte es einfach funktionieren. Wenn Sie dies nicht tun, führen Sie git-credential-winstore -i C:\Path\To\Git.exe.

Wenn Sie das nächste Mal versuchen, ein Commit für ein Repository durchzuführen, werden Sie aufgefordert, Ihre Anmeldeinformationen einzugeben. Das sollte es sein. Sie werden nicht länger nach Ihren Anmeldeinformationen gefragt, bis Sie Ihr Passwort ändern.


Nur zu Ihrer Kenntnisnahme ... Ihre Anmeldeinformationen werden im Windows-Anmeldeinformationsspeicher gespeichert

Wo speichern Sie meine Anmeldeinformationen?

Diese App verwendet nur den vorhandenen Windows-Anmeldeinformationsspeicher, um Ihre Anmeldeinformationen zu speichern. Sie können die gespeicherten Anmeldeinformationen anzeigen, indem Sie zu Systemsteuerung> Benutzerkonten> Anmeldeinformations-Manager wechseln und "Windows-Anmeldeinformationen" auswählen. Die Einträge, die mit "git:" beginnen, stammen aus dem git-credential-winstore.

12
Alex Essilfie

Das ist kein Idiot, es ist SSH.

Ich mache kein Windows, aber ssh hat ein Agentenkonzept, das Passphrasen für Sie speichern kann. In OS X ist dies standardmäßig aktiviert. Ihr ssh-Client hat wahrscheinlich eine Möglichkeit, dies zu konfigurieren.

10
Dustin

Wenn Sie ein Kennwort für Ihre Schlüsseldatei festlegen, müssen Sie dieses Kennwort beim Herstellen der Verbindung immer eingeben. Wenn Sie einen kennwortlosen Schlüssel erstellen, müssen Sie ihn nicht jedes Mal eingeben. Jeder, der Zugriff auf Ihre Schlüsseldatei hat, kann sich jetzt mit Ihrem github-Konto verbinden.

möglicherweise funktioniert auch ssh-agent. Führen Sie das aus und prüfen Sie, ob es sich an Ihre Passphrase erinnert.

7
Grant Limberg

[Bearbeiten - Frage falsch verstanden, dies ist eine Antwort auf ein verwandtes Problem. umformulierte Fassung für die Nachwelt verlassen]

Mein Fall war, dass ich versucht habe, auf ein Repo zu pushen, das auf einem unserer Server gehostet wurde. Wann immer ich versuchte, einen Push durchzuführen, fragte mich git nach meinem Passwort (nb - Passwort, nicht die Passphrase zu meinem privaten Schlüssel).

Indem ich meinen öffentlichen Schlüssel zu den autorisierten Schlüsseln auf dem Server hinzufügte, konnte ich passwortfreie Pushs auf diesen Server erhalten. Und weil es auf meinem privaten Schlüssel kein Passwort gab (was übrigens eine schlechte Praxis ist!), Musste ich überhaupt nichts eingeben.

Hier ist der Befehl zum Hinzufügen Ihres öffentlichen Schlüssels zu einem Server. Es wird davon ausgegangen, dass der Benutzer git der Benutzer auf dem Server ist.

cat .ssh/id_rsa.pub | ssh [email protected]_MASTER_IP 'cat >> .ssh/authorized_keys'

Sie können dasselbe erreichen, indem Sie sich beim Server anmelden und Ihren öffentlichen Schlüssel manuell an die Datei unter ~/.ssh/authorized_keys Anhängen.

7
hwjp

Mir ist klar, dass dies einige Jahre überfällig ist, aber ich bin über diese Frage gestolpert, um eine Lösung dafür zu finden, und ich habe etwas gefunden, das für alle Kompetenzstufen geeignet ist, also dachte ich, ich würde es teilen.

GitHub bietet einen sehr hilfreichen Installer, der alles schön und einfach macht: https://help.github.com/articles/caching-your-github-password-in-git/

4
roobeedeedada

Es gibt eine viel einfachere Lösung für dieses Problem, wenn es Ihnen nichts ausmacht, wenn Ihr Passwort im Klartext gespeichert ist und Sie TortoiseGit verwenden.

Erstelle einfach ein _netrc Datei in Ihrem Benutzerprofilverzeichnis - dh in Windows 7 wäre es C:\Users\MyName\_netrc. In dieser Datei werden Ihre Anmeldeinformationen in folgendem Format gespeichert:

machine bitbucket.org login thisismyname password p455w0rD
machine bitbucket.org login another_account password pwdpwdPWd
machine github.com login thisismynameagain password p455w0rD

Ich verwende TortoisePLink als SSH-Client und es funktioniert einwandfrei.

3
blade

Sie können ein .bashrc Datei im Home-Verzeichnis Ihres Benutzers wie C:/Users/youruser und dort 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

Dieses Skript wird jedes Mal ausgeführt, nachdem die Bash ausgeführt wurde. Sie müssen das Passwort also nur einmal eingeben, wenn git-bash ist gestartet!

Einige Versionen von Bash erfordern .bash_profile Datei statt .bashrc, also nur für den Fall, dass der Klon .bashrc:

copy .bashrc .bash_profile
2

sie können versuchen, -k arg hinzuzufügen, wenn Sie dies tun.

ssh-add -k ~/.ssh/id_rsa
1
tarikakyol