Ich klone ein Git-Repository in einem Skript wie folgt:
git clone https://user:[email protected]/name/.git
Das funktioniert, aber mein Benutzername und mein Passwort! sind jetzt in der url in gespeichert .git/config
.
Wie kann ich das verhindern, aber trotzdem in einem Skript tun (also keine manuelle Passworteingabe)?
git remote set-url origin https://host.com/name/.git
Antworten:
Die Methode, die ich benutze, besteht darin, a
git pull
anstelle eines Klons zu verwenden. Das Skript würde so aussehen:In wird Ihr Benutzername oder Passwort nicht gespeichert
.git/config
. Sofern keine anderen Schritte ausgeführt werden, werden der Klartext-Benutzername und das Kennwort angezeigt, während der Prozess mit Befehlen ausgeführt wird, die aktuelle Prozesse anzeigen (zps
. B. ).Ein weiterer Vorschlag, den ich machen würde (wenn Sie ssh nicht verwenden können), ist die Verwendung eines OAuth-Tokens anstelle des Klartext-Benutzernamens / -Kennworts, da es etwas sicherer ist. Sie können ein OAuth-Token aus Ihren Profileinstellungen generieren: https://github.com/settings/tokens .
Mit diesem Token würde dann der Pull-Befehl lauten
quelle
ps
während des Pull-IMO ist die beste Lösung, einen benutzerdefinierten
GIT_ASKPASS
Helfer zu verwenden und das Kennwort als weitere Umgebungsvariable bereitzustellen. So erstellen Sie beispielsweise eine Dateigit-askpass-helper.sh
als:und dann
git clone https://username@hostname/repo
mit UmgebungsvariablenGIT_ASKPASS=/path/to/git-askpass-helper.sh
und ausführenGIT_PASSWORD=nuclearlaunchcodes
.Dies hat den Vorteil, dass das Passwort auch in der Prozessliste nicht sichtbar ist.
quelle
git pull
Lösung und ermöglicht es Ihnen, das Klartextkennwort als Geheimnis in Ihrem bevorzugten Tool für die automatische Bereitstellung zu speichern.Sie können Ihre Verbindungsdaten in Ihre
~/.netrc
Datei eintragen . Etwas in der Art von:Stellen Sie einfach sicher, dass diese Datei auf 600 geändert wird. Wenn Sie Windows verwenden, kann der folgende Link nützlich sein: https://stackoverflow.com/questions/6031214/git-how-to-use-netrc-file-on- Windows-to-Save-Benutzer-und-Passwort
Persönlich neige ich dazu, SSH-Schlüssel für Authentifizierungszwecke zu verwenden (wenn Sie das dürfen, natürlich).
quelle
Nachdem ich Dutzende von SO-Posts, Blogs usw. durchgesehen hatte, habe ich jede Methode ausprobiert . Es deckt ALLES ab.
Siehe Das Cheatsheet zu Git-Anmeldeinformationen und privaten Paketen
Dies sind alle Möglichkeiten und Tools, mit denen Sie git sicher authentifizieren können, um ein Repository ohne eine interaktive Kennwortabfrage zu klonen .
Beste Optionen für keinen Klartextspeicher
Von den hier gestellten Fragen sind entweder SSH-Schlüssel
GIT_ASKPASS
oder diegit credential store
Verwendung des Betriebssystem-Schlüsselbund-Managers die beste Wahl.Da GIT_ASKPASS von den 3 wahrscheinlich am wenigsten verstanden wird, werde ich das hier detailliert beschreiben - und die anderen sind im Spickzettel.
GIT_ASKPASS
So erstellen Sie ein
GIT_ASKPASS
Skript:Wie man es benutzt:
Das Skript erhält stdin in Form von:
Das Skript empfängt Git-ENVs wie:
Weitere Details im Cheatsheet .
quelle