Wie kann ich einen "Git Pull" durchführen, ohne mein SSH-Passwort erneut einzugeben?

96

Ist es möglich zu konfigurieren, git/sshdass ich nicht jedes Mal meine Passphrase eingeben muss, wenn ich eine ausführen möchte git pull? Beachten Sie, dass das Repo ein privates Repo auf Github ist.

Oder was wäre alternativ die beste Vorgehensweise, um die Codebereitstellung von einem privaten Github-Repo aus zu automatisieren?

Zusätzliche Details: EC2-Instanz, auf der ein öffentliches AMI basierend auf Fedora ausgeführt wird.

jldupont
quelle
2
Mögliches Duplikat von Git über SSH konfigurieren
meagar
Sie haben eine Lösung für dieses Problem?
Nim
Ab Git 2.11+ (Q4 2016) ist die Verwendung von libsecret eine andere Möglichkeit: stackoverflow.com/a/40312117/8477066
Hielke Walinga

Antworten:

69

Schauen Sie sich diesen Link an: https://help.github.com/articles/working-with-ssh-key-passphrases/

Aber ich möchte nicht jedes Mal, wenn ich den Schlüssel benutze, eine lange Passphrase eingeben!

Ich auch nicht! Zum Glück gibt es ein kleines Tool namens ssh-agent, mit dem Sie Ihre Passphrase sicher speichern können, damit Sie sie nicht erneut eingeben müssen. Wenn Sie mit OSX Leopard oder höher arbeiten, können Ihre Schlüssel im Schlüsselbund des Systems gespeichert werden, um Ihnen das Leben noch einfacher zu machen. Die meisten Linux-Installationen starten ssh-agent automatisch für Sie, wenn Sie sich anmelden.

Fredrik Pihl
quelle
3
etwas nervös, jemandem mit einem Ruf von 17,7.000 zu antworten; habe ich die Frage falsch interpretiert ... ;-)
Fredrik Pihl
3
nervös? Seien Sie versichert: Die überwiegende Mehrheit der Leute hier ist ziemlich gut erzogen ... und diejenigen, die es nicht sind, haben größere Probleme als ich :)
jldupont
2
Dieser Link war hilfreich, um zu erklären, welche Befehle ausgeführt werden müssen, damit Ihre Passphrase gespeichert wird in ssh-agent: rabexc.org/posts/using-ssh-agent
Mateus Gondim
Ich möchte keine Schlüssel verwenden. Einfach, ich habe Benutzer \ Pass und ich möchte es auf Git-Client-Seite speichern
nim
Warum bietet der Link nur Mac / Widows-Optionen? Ich möchte auf dem Unix-Server ziehen, ohne den Pass erneut einzugeben. hat es geschafft, es für ein historisches Projekt zum Laufen zu bringen, kann aber nicht sagen, was ich dort gemacht habe. Ist der Punkt, dass, wenn Sie an einen Remote-Unix-Computer ssh, der Schlüssel weitergegeben wird und dieser stattdessen als Git-Pull-Schlüssel (oder Private Composer-VCS-Schlüssel) verwendet wird? Ich glaube, ich verstehe hier etwas falsch. Jede Hilfe geschätzt :)
Trainoasis
29

Ich habe das Passwort-Caching wie hier beschrieben aktiviert:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

So speichern Sie das Kennwort für einen Monat:

git config --global credential.helper 'cache --timeout=2628000'
Sileria
quelle
Danke, temuri- Ich habe überall nach genau diesem Detail gesucht. Es hat nicht funktioniert, aber die Dokumentation erwähnt anscheinend nicht, dass es nur für HTTPS ist.
Mike Emery
2
Wenn Sie ein Kennwort ( keine Passphrase mit Schlüsseldatei) für eine SSH-basierte URL eines Remote-Git-Repos verwenden, können Sie das Kennwort überhaupt nicht speichern. Ich habe jedoch festgestellt, dass Sie nach der Ausgabe eines Git-Befehls sofort das Kennwort eingeben und die Eingabetaste drücken können . Sie müssen nicht warten, bis die Kennwortabfrage angezeigt wird.
ADTC
1
Git noch fragen Pass
Nim
12

Versuche dies:

git config credential.helper store

Sie müssen Ihr Passwort einmal eingeben, danach wird es in einem Ordner im Stammverzeichnis gespeichert.

Wie in den Kommentaren erwähnt, funktioniert dies NICHT für SSH-Kennwörter, sondern nur für HTTPS-Kennwörter.

Yankee
quelle
1
@nim Das bedeutet nicht, dass Sie die Antwort ablehnen sollten. Ich habe vorgeschlagen, was für mich funktioniert hat, und jemand könnte es hilfreich finden.
Yankee
Es ist kein Passwort zum Speichern. Ich versuche es und nichts resultiert. Wenn Sie diese Fernbedienung mögen ssh: // name @ ip / path
nim
1
Dies funktioniert, wenn Sie das HTTP-Basisauthentifizierungskennwort speichern möchten.
Phil
4
Dies funktioniert NICHT für SSH-Passwörter, sondern nur für HTTPS-Passwörter.
Eliezer Berlin
funktioniert gut für https. Sie müssen dies nur eingeben. Das nächste Mal sollte das letzte Mal sein, dass Sie die Paraphrase eingeben müssen. Beim nächsten Mal sollte sich git das Passwort merken.
Jonathan
7

Ihre Situation ist jetzt behoben, aber für mich war es die Tatsache, dass ich mehr als einen Schlüssel hatte ~/.ssh/

Um das Problem zu beheben, musste ich eine Datei mit dem Namen erstellen ~/.ssh/configund die folgende Zeile hinzufügen:

IdentityFile ~/.ssh/my_key2_rsa

Wo ~/.ssh/my_key2_rsaist mein Schlüssel?

Mogsdad
quelle
1
Vielen Dank dafür, meine id_rsa und id_rsa.pubDateien haben einen benutzerdefinierten Namen, weshalb Git ihn niemals erkennen würde. ref: linux.die.net/man/5/ssh_config
lasec0203
5

Ich weiß nicht, warum das noch niemand gemeldet hat. Der einfachste Ansatz wäre jedoch, einfach eine einzelne Zeile AddKeysToAgent yesoben in die .ssh / config-Datei einzufügen. Natürlich ssh-agentmuss vorher laufen. Wenn es nicht läuft (überprüfen Sie mit dem Befehlssh-agent auf dem Terminal), führen Sie es einfach auseval $(ssh-agent)

Ich kann bestätigen, dass dies funktioniert, da ich in meinem Projekt mit vielen Submodulen und für jedes geklonte Submodul meine ssh-Passphrase eingeben musste. Nach dem obigen Trick muss ich es nicht mehr tun.

Die Quelle der Lösung ist /ubuntu/362280/enter-ssh-passphrase-once/853578#853578

infoclogged
quelle
Dies ist absolut die richtige Antwort.
Um