Ich habe gerade angefangen, Git zu verwenden, und ich kann es nicht dazu bringen, mich an meine Passphrase zu erinnern. Ich verwende cmd.exe erhöht und mein Git-Host ist Github und ich habe einen SSH-Schlüssel wie diesen Leitfaden auf Github erstellt
aber ich bekomme immer noch
*\subnus.mvc>git push origin master
Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa':
GIT_SSH
in Ihrer Umgebung fest (falls erforderlich). Git / ssh speichert Ihre Passphrase über ssh-agent. Siehe meine Antwort unten für detailliertere Anweisungen.Antworten:
Mir ist klar, dass diese Frage 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.
Rufen Sie das Windows-Dialogfeld "Umgebungsvariablen" auf (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, wo 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 es möglicherweise zusammen mit anderen Anwendungen installiert wird. Die Verwendung von plink.exe aus einer Installation und pageant.exe aus einer anderen Installation führt wahrscheinlich zu Problemen.
Öffnen Sie eine Eingabeaufforderung.
Wenn Sie versuchen, eine Verbindung zu einem auf 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 einem anderen Ort gehostet wird, ersetzen Sie [email protected] durch einen geeigneten Benutzernamen und eine URL. (Angenommen, Github) Sie sollten informiert werden, dass der Hostschlüssel des Servers nicht zwischengespeichert ist, und gefragt werden, ob Sie ihm vertrauen. Antworte mit einem y . Dadurch wird der Hostschlüssel des Servers zur Liste der bekannten Hosts von PuTTY hinzugefügt. Ohne diesen Schritt funktionieren Git-Befehle nicht richtig. Nach dem Drücken der Eingabetaste informiert Github Sie 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 dadurch Shell-Zugriff erhalten, ist es wahrscheinlich am besten, den Link zu beenden, ohne etwas anderes zu tun.)
Zweite Lösung Nimmt Windows, msysgit und TortoiseGit an.
TortoiseGit enthält ausführbare PuTTY-Dateien und eine speziell modifizierte Version von plink (TortoisePlink.exe), die die Arbeit erleichtert.
Rufen Sie das Windows-Dialogfeld "Umgebungsvariablen" auf (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, wo sich TortoisePlink.exe befindet. 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 es möglicherweise zusammen mit anderen Anwendungen installiert wird. Die Verwendung von TortoisePlink.exe aus der TortoiseGit-Installation und pageant.exe aus einer anderen Installation einer anderen Anwendung (oder aus einer eigenständigen PuTTY-Installation) führt wahrscheinlich zu Problemen.
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 Hostschlü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, dass pageant.exe Ihre PPK-Datei beim Booten automatisch lädt , je nachdem, wie oft Sie sie benötigen.
Dritte Lösung Nimmt Fenster, msysgit und native Eingabeaufforderung an.
start-ssh-agent
quelle
start-ssh-agent
die Befehlszeile eingeben können , um Ihre SSH-Passphrase zu speichern.Jedes Mal, wenn ich einen neuen Desktop einrichte, vergesse ich diese Anweisungen, daher füge ich hier eine weitere Antwort hinzu, da ich gleich oft darauf stoße!
Schnelle Schritte für ungeduldige Benutzer wie mich
OpenSSH Authentication Agent
Dienst und starten Sie ihn automatisch.ssh-add
in der Befehlszeile Ihren SSH-Schlüssel hinzu.$ENV:GIT_SSH=C:\Windows\System32\OpenSSH\ssh.exe
zu Ihrer Sitzung oder dauerhaft zu Ihrer Benutzerumgebung hinzu.Detaillierte Schritte: Übersicht
Windows wird seit einiger Zeit mit OpenSSH ausgeliefert. Es enthält alle notwendigen Bits, damit ssh neben Git funktioniert, aber es scheint immer noch etwas TLC zu benötigen, bevor es 100% nahtlos funktioniert. Hier sind die Schritte, die ich ab Windows Version 10.0.18362.449 mit Erfolg ausgeführt habe (Sie können Ihre Windows 10-Version anzeigen, indem Sie eine cmd.exe-Shell öffnen und eingeben
ver
).Ich gehe hier davon aus, dass Sie bereits Ihr SSH-Schlüssel-Setup haben und sich unter befinden
~/.ssh/id_rsa
Aktivieren Sie den SSH-Agent-Dienst auf Ihrer Windows 10-Box.
OpenSSH Authentication Agent
Dienst in der Liste.OpenSSH Authentication Agent
Dienst und wählen Sie "Eigenschaften".Startup type:
inAutomatic
.Start
Schaltfläche, um den Servicestatus in zu ändernRunning
.OK
, und schließen Sie die Dienst-App.Fügen Sie Ihren Schlüssel zum hinzu
ssh-agent
ssh-agent
:ssh-add
(Sie können den Pfad zu Ihrem Schlüssel als erstes Argument hinzufügen, wenn er vom Standard abweicht) .Versuchen Sie Git + SSH
git clone [email protected]:octocat/Spoon-Knife
Legen Sie Ihre
GIT_SSH
Umgebungsvariable festIn jeder Sitzung können Sie einfach diese Umgebungsvariable festlegen, und die Eingabeaufforderung für Ihre Passphrase wird nicht mehr angezeigt, und ssh verwendet die
ssh-agent
in Ihrem Namen. Alternativ können Sie Ihre Passphrase dauerhaft in der Umgebung Ihres Benutzers festlegen.So stellen Sie
GIT_SSH
nur die aktuelle Shell ein:ssh.exe
:$Env:GIT_SSH=$((Get-Command -Name ssh).Source)
GIT_SSH
Dauerhaft einstellenVariable name:
Feld auf GIT_SSHVariable value:
Feld (normalerweiseC:\Windows\System32\OpenSSH\ssh.exe
) auf path-to-ssh.exe .Beachten Sie, dass sich dies wahrscheinlich mit neuen Schritten / Verfahren ändern wird, wenn Windows 10 fortschreitet und ich mehr erfahre. Ich werde versuchen, dies auf dem neuesten Stand zu halten, ich freue mich auf Feedback in den Kommentaren.
quelle
Weitere Informationen finden Sie auf dieser Seite: http://help.github.com/working-with-key-passphrases/
quelle
msysgit
Shell brauchte .notepad ~/.profile
den Inhalt dieses Links verwendet und kopiert, den Git Bash neu gestartet, mein Passwort eingegeben, davon profitiert ...Wenn Sie Git Bash unter Windows verwenden , können Sie Folgendes ausführen:
Im zweiten Befehl wird nach der 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 ein Beispiel im folgenden Screenshot):
quelle
Eine zusätzliche Lösung 5 Jahre, 8 Monate und 6 Tage nach der Veröffentlichung der Frage wäre keine schlechte Idee.
HINWEIS: Angenommen, Sie verwenden einen Windows-Computer.
PATH
Umgebungsvariablen haben, sollte es einfach funktionieren. Wenn nicht, rennegit-credential-winstore -i C:\Path\To\Git.exe
.Wenn Sie das nächste Mal versuchen, ein Commit für ein Repository festzulegen, werden Sie aufgefordert, Ihre Anmeldeinformationen einzugeben. Das sollte es sein. Sie werden nicht mehr nach Ihren Anmeldeinformationen gefragt, bis Sie Ihr Passwort ändern.
Nur zu Ihrer Kenntnis ... Ihre Anmeldeinformationen werden im Windows Credential Store gespeichert
quelle
Wenn Sie ein Kennwort für Ihre Schlüsseldatei festlegen, müssen Sie dieses Kennwort bei der Verbindung immer eingeben. Wenn Sie einen kennwortlosen Schlüssel erstellen, müssen Sie ihn nicht jedes Mal eingeben. Jeder Benutzer mit Zugriff auf Ihre Schlüsseldatei kann jetzt eine Verbindung zu Ihrem Github-Konto herstellen.
ssh-agent kann auch funktionieren. Versuchen Sie, das auszuführen, und prüfen Sie, ob es sich an Ihre Passphrase erinnert.
quelle
ssh-keygen -p
sollte es dem OP ermöglichen, keine Passphrase zu setzen[edit - die Frage falsch verstanden, dies ist eine Antwort auf ein verwandtes Problem. umformulierte Version für die Nachwelt verlassen]
Mein Fall war, dass ich versucht habe, auf ein Repo zuzugreifen, das auf einem unserer Server gehostet wurde. Wann immer ich versuchte, einen Push auszuführen, fragte mich git nach meinem Passwort (nb - Passwort, nicht die Passphrase für meinen privaten Schlüssel).
Durch Hinzufügen meines öffentlichen Schlüssels zu den autorisierten Schlüsseln auf dem Server konnte ich kennwortfreie Pushs auf diesen Server erhalten. Und weil es keine Passphrase gab mein privater Schlüssel enthielt (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.Sie können dasselbe erreichen, indem Sie sich am Server anmelden und Ihren öffentlichen Schlüssel manuell an die Datei unter anhängen
~/.ssh/authorized_keys
quelle
Mir ist klar, dass dies mehrere Jahre überfällig ist, aber ich bin auf diese Frage gestoßen, als ich versucht habe, eine Lösung dafür zu finden, und habe etwas gefunden, das für alle Kompetenzstufen geeignet ist, und dachte, ich würde es teilen.
GitHub bietet ein sehr hilfreiches Installationsprogramm, das alles schön und einfach macht: https://help.github.com/articles/caching-your-github-password-in-git/
quelle
Nehmen wir an, Sie möchten eine reine Git Bash- Lösung ohne TortoiseGit oder PuTTY verwenden. Außerdem möchten Sie Ihre Passphrasen nicht dauerhaft speichern, da dies fast so ist, als hätten Sie Ihren SSH-Schlüssel überhaupt ohne Passphrase generiert. Sie möchten jedoch weiterhin Caching verwenden.
Für Caching-Zwecke wird der
ssh-agent
Prozess verwendet, der in der Git Bash-Distribution enthalten ist. Dieser Prozess wird nicht standardmäßig gestartet, daher muss er zuerst gestartet werden. Damit SSH-Schlüssel zwischengespeichert werden können, sollten sie diesem Prozess mit hinzugefügt werdenssh-add
Befehl der Sie zur Eingabe der Passphrase eines Schlüssels auffordert und diese im Speicher speichert.Nachteile anderer Lösungen:
ssh-agent
wie in GitHubs Artikel wird beim Starten von Git Bash von Anfang an nach einer Passphrase gefragt, unabhängig davon, ob Sie in dieser Sitzung Ihren SSH-Schlüssel verwenden müssen oder nicht. Wenn Sie heute mit Ihrem lokalen Repo arbeiten, möchten Sie wahrscheinlich nur dann eine Passphrase bereitstellen, wenn dies wirklich erforderlich ist (z. B. bei der Interaktion mit einem Remote-Repo).ssh-agent
Like in GitLabs Artikel mit starten, habeneval $(ssh-agent -s)
Sie es wahrscheinlich satt, dies jedes Mal einzugeben. Möglicherweise haben Sie diese beiden Zeilen zu Ihrer.bashrc
Konfiguration hinzugefügt, um sie automatisch zu starten. Die Nachteile sind die gleichen wie oben und ein zusätzlicher: Jedes Mal, wenn Sie ein neues Git Bash-Terminal starten, erhalten Sie einen zusätzlichen SSH-Agent-Prozess (das Bash-Skript von GitHub prüft, ob dieser Prozess bereits gestartet wurde).Diese Lösung ist also für diejenigen gedacht, die sich fragen, wie Git Bash nur einmal pro Windows-Sitzung und nur dann, wenn sie wirklich benötigt wird, nach einer Passphrase fragen kann. Es ähnelt dem Verhalten von Paßphrasen Management mit GnuPG Commits Auto-Unterzeichnung mit
default-cache-ttl
.Konfigurieren von SSH, um bei Bedarf einmalig nach Passphrasen zu fragen, nur mit Git Bash
Zuerst möchten wir das
ssh-agent
beim Starten einer Git Bash-Shell automatisch starten . Wir werden dafür ein modifiziertes GitHub- Skript verwenden , da es prüft, ob der Prozess bereits gestartet wurde, aber wir möchten nicht, dass esssh-add
sofort Schlüssel gibt. Dieses Skript geht in Ihr~/.bashrc
oder~/.profile
oder~/.bash_profile
(~
ist das Home-Verzeichnis Ihres Benutzers wieC:\Users\Username
- ausführencd ~
und dannpwd
für den Git Bash ausdrucken):Bearbeiten oder erstellen Sie nun eine
~/.ssh/config
Datei und fügen Sie eineAddKeysToAgent
Option für jede Host-Zeilengruppe hinzu, für die das Caching aktiviert werden soll (Sie können sie auch global aktivieren, indem Sie die Direktive am Anfang der Datei vor allen Host-Deklarationen platzieren):Die maximale Standardlebensdauer beträgt für immer oder bis der
ssh-agent
Prozess beendet wird (entweder manuell vom Task-Manager oder wenn Ihr PC heruntergefahren wird). Wenn Sie ein endliches Timeout verwenden möchten, können Sie es mit dem-t
Parameter von ssh-agent festlegen . Ändern Sie die Zeile im Bash-Skript ab dem ersten Schritt oben, z. B. für eine 30-minütige Lebensdauer des Schlüsselcaches:Sehen Sie hier für weitere Zeitformat - Qualifikation.
quelle
Sie können eine
.bashrc
Datei im Home-Verzeichnis Ihres Benutzers erstellenC:/Users/youruser
und dort ablegen:Dieses Skript wird jedes Mal ausgeführt, nachdem bash ausgeführt wurde. Sie müssen das Passwort also nur einmal eingeben, wenn
git-bash
es gestartet wird!Einige Versionen von Bash erfordern
.bash_profile
stattdessen eine Datei.bashrc
, also nur für den Fall, dass geklont wird.bashrc
:quelle
kann versuchen, -k arg hinzuzufügen, wenn Sie dies tun;
quelle