Ich weiß, wie man einen Benutzernamen und ein Passwort für eine HTTPS-Anfrage wie diese angibt:
git clone https://username:password@remote
Aber ich möchte wissen, wie man der Fernbedienung einen Benutzernamen und ein Passwort wie folgt gibt:
git clone [email protected]
Ich habe es so versucht:
git clone username:password@[email protected]
git clone git@username:[email protected]
git clone [email protected]@username:password
Aber sie haben nicht funktioniert.
Antworten:
Basierend auf Michael Scharfs Kommentar:
Sie können das Kennwort weglassen, damit es nicht in Ihrer Bash-Verlaufsdatei protokolliert wird:
Sie werden aufgefordert, Ihr Passwort einzugeben.
Alternativ können Sie Folgendes verwenden:
Dieser Weg funktionierte für mich aus einem GitHub-Repository.
quelle
git clone https://[email protected]/username/repository.git
. Git wird Sie fragen und es wird weder in .git / config noch in Ihrem Bash-VerlaufDas
user@host:path/to/repo
Format weist Git an, sich mit sshhost
mit dem Benutzernamen anzumeldenuser
. Vongit help clone
:Der Teil vor dem
@
ist der Benutzername, und die Authentifizierungsmethode (Kennwort, öffentlicher Schlüssel usw.) wird von ssh und nicht von Git bestimmt. Git hat keine Möglichkeit, ein Passwort an ssh zu übergeben, da ssh abhängig von der Konfiguration des Remote-Servers möglicherweise nicht einmal ein Passwort verwendet.Verwenden Sie
ssh-agent
diese Option , um zu vermeiden, dass ständig Kennwörter eingegeben werdenWenn Sie Ihr SSH-Kennwort nicht ständig eingeben möchten, besteht die typische Lösung darin, ein öffentliches / privates Schlüsselpaar zu generieren , den öffentlichen Schlüssel in Ihrer
~/.ssh/authorized_keys
Datei auf dem Remote-Server abzulegen und Ihren privaten Schlüssel in zu ladenssh-agent
. Siehe auch Konfigurieren von Git über SSH einmal einzuloggen , GitHub Hilfe Seite auf SSH - Schlüssel Paßphrasen , gitolite ssh Dokumentation und Dokumentation Heroku der SSH - Schlüssel .Auswahl zwischen mehreren Konten bei GitHub (oder Heroku oder ...)
Wenn Sie mehrere Konten an einem Ort wie GitHub oder Heroku haben, haben Sie mehrere SSH-Schlüssel (mindestens einen pro Konto). Um auszuwählen, unter welchem Konto Sie sich anmelden möchten, müssen Sie ssh mitteilen, welcher private Schlüssel verwendet werden soll .
Angenommen, Sie hatten zwei GitHub-Konten:
foo
undbar
. Ihr SSH-Schlüssel fürfoo
ist~/.ssh/foo_github_id
und Ihr SSH-Schlüssel fürbar
ist~/.ssh/bar_github_id
. Sie möchten[email protected]:foo/foo.git
mit Ihremfoo
Konto und[email protected]:bar/bar.git
mit Ihrembar
Konto zugreifen . Sie würden Folgendes zu Ihrem hinzufügen~/.ssh/config
:Sie würden dann die beiden Repositorys wie folgt klonen:
Ssh ganz vermeiden
Einige Dienste bieten HTTP-Zugriff als Alternative zu ssh:
GitHub:
Herrlich:
Heroku: Siehe diesen Support-Artikel .
WARNUNG : Wenn Sie Ihr Passwort zur Klon-URL hinzufügen, speichert Git Ihr Klartext-Passwort in
.git/config
. Verwenden Sie einen Helfer für Anmeldeinformationen, um Ihr Kennwort bei Verwendung von HTTP sicher zu speichern. Zum Beispiel:Dies führt dazu, dass Git alle 15 Minuten (standardmäßig) nach Ihrem Passwort fragt. Siehe
git help credentials
für Details.quelle
In den Kommentaren zu @ Bassetassens Antwort erwähnte @plosco, dass Sie
git clone https://<token>@github.com/username/repository.git
zumindest verwenden können , um von GitHub zu klonen. Ich dachte, ich würde die Vorgehensweise erweitern, falls jemand auf diese Antwort stößt, wie ich es beim Versuch getan habe, das Klonen zu automatisieren.GitHub hat eine sehr praktische Anleitung dazu, aber es wird nicht behandelt, was zu tun ist, wenn Sie alles für Automatisierungszwecke in einer Zeile zusammenfassen möchten. Es wird gewarnt, dass das Hinzufügen des Tokens zur Klon-URL es im Klartext in speichert
.git/config
. Dies ist offensichtlich ein Sicherheitsrisiko für fast jeden Anwendungsfall, aber da ich vorhabe, das Repo zu löschen und das Token zu widerrufen, wenn ich fertig bin, ist es mir egal.1. Erstellen Sie ein Token
GitHub hat hier eine ganze Anleitung, wie man ein Token bekommt, aber hier ist die TL; DR.
2. Klonen Sie das Repo
Das gleiche wie der Befehl @plosco gab
git clone https://<token>@github.com/<username>/<repository>.git
, nur zu ersetzen<token>
,<username>
und<repository>
mit dem, was Ihr Info ist.Wenn Sie es in einen bestimmten Ordner klonen möchten, geben Sie einfach die Ordneradresse am Ende wie folgt ein :
git clone https://<token>@github.com/<username>/<repository.git> <folder>
Wo<folder>
befindet sich der Ordner, in den Sie ihn klonen möchten? Sie können natürlich auch verwenden.
,..
,~
, hier usw. wie können Sie an anderer Stelle.3. Hinterlassen Sie keine Spuren
Je nachdem, wie sensibel Ihre Arbeit ist, ist möglicherweise nicht alles erforderlich.
rm -rf <folder>
.git remote remove origin
entfernen oder das Token einfach durch Ausführen entfernengit remote set-url origin https://github.com/<username>/<repository.git>
.Beachten Sie, dass ich kein Profi bin, daher ist das oben Gesagte möglicherweise nicht in dem Sinne sicher, dass für jede Art von forensischer Arbeit keine Spur übrig bleibt.
quelle
https://<token>@github.com
wurde mit meinem Portal nicht akzeptiert, ich musste verwendenhttps://oauth2:<token>@github.com
Obwohl es viele Antworten gibt, stehe ich vor dem wiederholten Problem, wenn Benutzername oder Passwort Sonderzeichen enthalten.
URL verschlüsseln Sie Ihren Benutzernamen und Ihr Passwort für git und verwenden Sie es dann als Teil der URL selbst (wenn keine Sicherheitsbedenken bestehen).
Angenommen, der URL-codierte Wert des Benutzernamens
und URL-codierter Wert des Passworts
Dann würde Ihre GIT-Klon-URL folgendermaßen aussehen:
Hoffe das hilft.
Nur für den Fall, möchten Sie URL online codieren: https://www.urlencoder.org/
quelle
Ich habe dieses Problem folgendermaßen gelöst:
quelle
Unter Windows sollten die folgenden Schritte das GitHub-Anmeldefenster beim Auslösen erneut auslösen
git clone
:quelle
Befolgen Sie diese Argumente, um sie durch Ihre Sonderfälle zu ersetzen, wenn sie ein Problem verursachen:
! # $ & '() * +, / :; =? @ []
% 21% 23% 24% 26% 27% 28% 29% 2A% 2B% 2C% 2F% 3A% 3B% 3D% 3F% 40% 5B% 5D
Also zum Beispiel-
aktuelle URL: https: // usern @ me: p @ ssword @ git / reponame.git
Zu verwendende Lösungs-URL: https: // usern% 40me: p%40ssword@git/reponame.git
quelle
Führen Sie dies zuerst aus, bevor Sie auf die gleiche Weise klonen. Sollte behoben sein!
quelle
Dies ist eine ausgezeichnete Frage zum Stapelüberlauf, und die Antworten waren sehr aufschlussreich, sodass ich ein lästiges Problem lösen konnte, auf das ich kürzlich gestoßen bin.
Die Organisation, für die ich arbeite, verwendet ein
Atlassian's BitBucket
Produkt (nicht Github), im Wesentlichen ihre Version von GitHub, damit Repositorys vollständig vor Ort gesichert werden können. Ich hatte ein ähnliches Problem wie @coordinate, da mein Passwort für ein neues Repository erforderlich war, das ich ausgecheckt habe. Meine Anmeldeinformationen wurden global für alleBitBucket
Projekte gespeichert , daher bin ich mir nicht sicher, was zum Verlust von Anmeldeinformationen geführt hat.Kurz gesagt, ich konnte den folgenden GIT-Befehl eingeben ( nur meinen Benutzernamen angeben), der Git's Credential Manager aufforderte , mich zur Eingabe des Kennworts aufzufordern, das ich dann speichern konnte.
HINWEIS: Die in Klammern gesetzten Verzeichnis-Unterpfade beziehen sich einfach auf interne Referenzen und variieren für Sie!
quelle
Wenn Sie den Prozess verwenden
http/https
und ihn VOLLSTÄNDIG AUTOMATISIEREN möchten , ohne dass Benutzereingaben oder Eingabeaufforderungen erforderlich sind (z. B. innerhalb einer CI / CD-Pipeline), können Sie den folgenden Ansatz nutzengit credential.helper
Hier können Sie die
ALICE_GITHUB_PASSWORD
Umgebungsvariable aus einem vorherigen Shell-Befehl oder aus Ihrer Pipeline-Konfiguration usw. festlegen.Denken Sie daran, dass "store" -basierter git-credential-helper Passwörter und Werte im Klartext speichert. Stellen Sie daher sicher, dass Ihr Token / Passwort nur über sehr eingeschränkte Berechtigungen verfügt.
Verwenden Sie jetzt einfach https: //[email protected]/my_repo.git, wo immer Ihr automatisiertes System das Repo abrufen muss - es verwendet die Anmeldeinformationen für
alice
ingithub.com
als Speicher von git-credential-helper.quelle