Ich habe mein Git-Repository über ssh geklont. Jedes Mal, wenn ich durch Drücken oder Ziehen mit dem Ursprungsmaster kommuniziere, muss ich mein Passwort erneut eingeben. Wie kann ich git so konfigurieren, dass ich mein Passwort nicht mehrmals eingeben muss?
195
Antworten:
Versuchen Sie
ssh-add
, Sie müssenssh-agent
Ihren privaten Schlüssel ausführen und halten(Ok, wenn Sie auf die aktualisierte Frage antworten, führen Sie zuerst
ssh-keygen
einen öffentlichen und einen privaten Schlüssel aus, wie Jefromi erklärt hat . Sie legen den öffentlichen Schlüssel auf dem Server ab. Sie sollten eine Passphrase verwenden, wenn Sie nicht das Äquivalent einer Ebene haben -text Passwort in Ihrem privaten Schlüssel. Aber wenn Sie dies tun, dann brauchen Sie als praktische Angelegenheitssh-agent
wie unten erklärt.)Sie möchten beim
ssh-agent
Anmelden im Hintergrund ausgeführt werden. Sobald Sie sich angemeldet haben, sollten Siessh-add
einmal und nur einmal ausgeführt werden, um dem Agenten Ihre Passphrase zu geben und Ihren Schlüssel zu dekodieren. Der Agent sitzt dann einfach im Speicher, Ihr Schlüssel ist entsperrt und geladen und kann jedes Mal verwendet werden, wenn Sie irgendwo ssh.Alle Befehle der ssh-Familie 1 konsultieren dann den Agenten und können automatisch Ihren privaten Schlüssel verwenden.
Unter OSX (err, macOS ) werden GNOME- und KDE-Systeme
ssh-agent
normalerweise automatisch für Sie gestartet. Ich werde die Details durchgehen, falls Sie wie ich auch eine Cygwin- oder andere Windows-Umgebung haben, in der dies mit Sicherheit nicht für Sie erledigt wird.Beginnen Sie hier :
man ssh-agent
.Es gibt verschiedene Möglichkeiten, den Agenten automatisch auszuführen. Wie in der Manpage erläutert, können Sie es so ausführen, dass es übergeordnet zu allen anderen Prozessen Ihrer Anmeldesitzung ist. Auf diese Weise befinden sich die bereitgestellten Umgebungsvariablen automatisch in allen Ihren Shells. Wenn Sie (später) aufrufen
ssh-add
oderssh
beide Zugriff auf den Agenten haben, haben alle Umgebungsvariablen mit magischen Socket-Pfadnamen oder was auch immer.Alternativ können Sie den Agenten als normales untergeordnetes Element ausführen, die Umgebungseinstellungen in einer Datei speichern und diese Datei beim Start in jeder Shell als Quelle verwenden.
Meine OSX- und Ubuntu-Systeme führen automatisch die Einrichtung zum Starten des Agenten durch. Ich muss sie also nur
ssh-add
einmal ausführen . Versuchen Sie es auszuführenssh-add
und prüfen Sie, ob es funktioniert. Wenn ja, müssen Sie dies nur einmal pro Neustart tun.Mein Cygwin-System musste manuell erstellt werden, also habe ich dies in meinem
.profile
und ich habe.bashrc
Quelle.profile
:Die
.agent
Datei wird automatisch vom Skript erstellt. Es enthält die Definitionen und Exporte der Umgebungsvariablen. Das obige versucht, die .agent-Datei als Quelle zu erstellen, und versucht dann, sie anps(1)
den Agenten weiterzuleiten . Wenn es nicht funktioniert, startet es einen Agenten und erstellt eine neue Agentendatei. Sie können auch einfach ausführenssh-add
und bei einem Fehler einen Agenten starten.1. Und sogar lokal und fern
sudo
mit der richtigen Pam-Erweiterung.quelle
ssh-agent
zu beziehen, ist es wahrscheinlich ordentlicher zu verwenden:eval `ssh-agent`
Hatte ein ähnliches Problem mit dem GitHub, weil ich das HTTPS-Protokoll verwendete. Um zu überprüfen, welches Protokoll Sie verwenden, führen Sie es einfach aus
und schauen Sie sich die Zeile an, die mit beginnt
remote.origin.url
. So wechseln Sie Ihr Protokollquelle
Permission denied
Fehler gemacht.git remote set-url origin [email protected]:your_username/your_project.git
Hier geht es darum, ssh zu konfigurieren, nicht git. Wenn Sie dies noch nicht getan haben, sollten Sie
ssh-keygen
(mit einer leeren Passphrase) ein Schlüsselpaar erstellen. Anschließend kopieren Sie den öffentlichen Schlüssel mit auf das Remote-Zielssh-copy-id
. Wenn Sie nicht mehrere Schlüssel benötigen (z. B. einen sichereren mit einer Passphrase für andere Zwecke) oder einige wirklich seltsame Dinge mit mehreren Identitäten vor sich haben, ist dies ganz einfach:Bearbeiten: Sie sollten eigentlich nur die Antwort von DigitalRoss lesen, aber: Wenn Sie Schlüssel mit Passphrasen verwenden, müssen Sie
ssh-add <key-file>
diese hinzufügenssh-agent
(und natürlich eine starten,ssh-agent
wenn in Ihrer Distribution noch keine für Sie ausgeführt wird).quelle
ssh-agent
Da er das Problem der Passphrase jedes Mal umgehen möchte. Kein Downvoting, aber ich denke, Sie müssen diese Antwort verbessern, es sei denn, ich bin derjenige, der falsch verstanden hat ...ssh-agent
. +1 für dich!ssh-*
nennt man die Passphrase, die zur Verwendung des Schlüssels benötigt wird -, wo Sie wirklich Ihr tatsächliches Benutzerkennwort auf der Fernbedienung gemeint haben?Stellen Sie sicher, dass Sie beim Klonen des Repositorys die SSH-URL und nicht das HTTPS verwendet haben. Wählen Sie im Feld Klon-URL des Repos das SSH-Protokoll aus, bevor Sie die URL kopieren. Siehe Bild unten:
quelle
Wenn Sie mit HTTPS geklont haben (empfohlen), dann: -
und dann
timeout = 2592000 (30 Tage in Sekunden), um das Caching für 30 Tage zu aktivieren (oder was auch immer für Sie geeignet ist).
Führen Sie nun einen einfachen git-Befehl aus, für den Sie Ihren Benutzernamen und Ihr Kennwort benötigen.
Geben Sie Ihre Anmeldeinformationen einmal ein und jetzt ist das Caching für 30 Tage aktiviert.
Versuchen Sie es erneut mit einem git-Befehl, und jetzt benötigen Sie keine Anmeldeinformationen mehr.
Für weitere Informationen: - Zwischenspeichern Ihres GitHub-Passworts in Git
Hinweis : Sie benötigen Git 1.7.10 oder neuer, um den Helfer für Anmeldeinformationen zu verwenden. Beim Neustart des Systems müssen wir möglicherweise das Kennwort erneut eingeben.
quelle
Erweiterung von Mueins Gedanken für diejenigen, die es vorziehen, Dateien direkt zu bearbeiten, anstatt Befehle in Git-Bash oder Terminal auszuführen.
Wechseln Sie in das .git-Verzeichnis Ihres Projekts (Projektstamm auf Ihrem lokalen Computer) und öffnen Sie die Konfigurationsdatei. Suchen Sie dann nach [remote "origin"] und stellen Sie die URL-Konfiguration wie folgt ein:
quelle
Ich denke, hier gibt es zwei verschiedene Dinge. Die erste ist, dass bei der normalen SSH-Authentifizierung der Benutzer das Kennwort des Kontos eingeben muss (wobei das Kennwort des Kontos je nach sshd-Konfiguration anhand verschiedener Methoden authentifiziert wird).
Sie können vermeiden, dieses Kennwort mithilfe von Zertifikaten zu verwenden. Bei Zertifikaten müssen Sie noch ein Passwort eingeben, diesmal jedoch das Passwort Ihres privaten Schlüssels (das unabhängig vom Passwort des Kontos ist).
Befolgen Sie dazu die Anweisungen von steveth45:
Wenn Sie vermeiden möchten, das Kennwort des Zertifikats jedes Mal einzugeben, können Sie ssh-agent verwenden, wie von DigitalRoss hervorgehoben
Das einzige Problem von ssh-agent ist, dass Sie zumindest unter * nix das Zertifikatspasswort für jede neue Shell eingeben müssen. Dann wird das Zertifikat "geladen" und Sie können es zur Authentifizierung bei einem SSH-Server verwenden, ohne ein Kennwort einzugeben. Aber das ist auf dieser speziellen Hülle.
Mit Schlüsselbund können Sie dasselbe tun wie mit ssh-agent, jedoch "systemweit". Sobald Sie Ihren Computer einschalten, öffnen Sie eine Shell und geben das Kennwort des Zertifikats ein. Und dann verwendet jede andere Shell dieses "geladene" Zertifikat und Ihr Passwort wird nie wieder abgefragt, bis Sie Ihren PC neu starten.
Gnome hat eine ähnliche Anwendung namens Gnome Keyring , die bei der ersten Verwendung nach dem Kennwort Ihres Zertifikats fragt und es dann sicher speichert, damit Sie nicht erneut gefragt werden.
quelle
AddKeysToAgent yes
in .ssh / config . Dann wird es in den Speicher geladen, bis Sie den ComputerWenn Sie Github verwenden, haben sie ein sehr schönes Tutorial, das es klarer erklärt (zumindest für mich).
http://help.github.com/set-up-git-redirect/
quelle
Wenn Sie nach einer Passphrase gefragt werden, lassen Sie diese leer, drücken Sie einfach die Eingabetaste. so einfach ist das!!
quelle
Versuchen Sie dies aus der Box, aus der Sie schieben
Sie sollten dann eine willkommene Antwort von Github erhalten und es wird in Ordnung sein, dann zu pushen.
quelle
Hi gkucmierz! You've successfully authenticated, but GitHub does not provide shell access.
Aber irgendwie fragt mich Git immer noch nach dem Passwort, wenn ich versuche zu pushenIch musste ein Git-Repo von einem Server klonen, der keine Anmeldung über den SSH-Schlüssel erlaubte, sondern nur mit einem Benutzer / Passwort. Ich habe keine Möglichkeit gefunden, das Git-Plugin für die Verwendung einer einfachen Benutzer- / Kennwortkombination zu konfigurieren. Daher habe ich den folgenden Shell-Befehl als Pre-Build-Schritt auf einem Linux-Build-Computer hinzugefügt, der vom erwarteten Tool abhängt (apt-get install require):
Dies ist keine gute Möglichkeit, dieses Problem zu lösen, da Ihr Passwort als klarer Text in der Konfiguration und den Protokollen des Jenkins-Jobs angezeigt wird. Verwenden Sie es nur, wenn es keine Möglichkeit gibt, die RSA-KEY-Authentifizierung oder andere Konfigurationsmöglichkeiten zu konfigurieren!
quelle
Fügen Sie
AddKeysToAgent yes
oben in der .ssh / config-Datei eine einzelne Zeile hinzu . Natürlich muss ssh-agent vorher laufen. Wenn es nicht läuft (check byprep ssh-agent
), dann führen Sie es einfach auseval $(ssh-agent)
Jetzt wird der Schlüssel systemweit in den Speicher geladen und Sie müssen die Passphrase nicht erneut eingeben.
Die Quelle der Lösung ist /ubuntu/362280/enter-ssh-passphrase-once/853578#853578
quelle
Ich habe versucht zu vermeiden, die Passphrase ständig einzugeben, auch weil ich ssh unter Windows verwende. Ich habe meine .profile-Datei so geändert, dass ich in einer bestimmten Sitzung meine Passphrase eins eingebe. Das ist also der Code:
Also gebe ich meine Passphrase einmal in einer Sitzung ein.
quelle
Ich habe all diese Vorschläge und mehr ausprobiert, nur um einen Klon von meiner AWS-Instanz zu erstellen. Nichts hat geklappt. Ich habe schließlich aus Verzweiflung betrogen: Ich habe den Inhalt von id_rsa.pub auf meinen lokalen Computer kopiert und ihn an ~ / .ssh / unknown_hosts auf meiner AWS-Instanz angehängt.
quelle