1325 Stimmen

Wie gebe ich einen Benutzernamen und ein Passwort an, wenn ich "git clone git@remote.git" ausführe?

Ich weiß, wie man einen Benutzernamen und ein Passwort für eine HTTPS-Anfrage wie diese bereitstellt:

git clone https://username:password@remote

Aber ich würde gerne wissen, wie ich einen Benutzernamen und ein Passwort für die Fernbedienung angeben kann:

git clone git@remote.git

Ich habe es auf diese Weise versucht:

git clone username:password@git@remote.git
git clone git@username:password@remote.git
git clone git@remote.git@username:password

Aber sie haben nicht funktioniert.

1938voto

Bassetassen Punkte 19694

Basierend auf dem Kommentar von Michael Scharf:

Sie können das Passwort weglassen, damit es nicht in Ihrer Bash-Historiendatei protokolliert wird:

git clone https://username@github.com/username/repository.git

Sie werden zur Eingabe Ihres Passworts aufgefordert.

Alternativ können Sie auch verwenden:

git clone https://username:password@github.com/username/repository.git

Dieser Weg funktionierte bei mir über ein GitHub-Repository.

297voto

Richard Hansen Punkte 47390

Le user@host:path/to/repo Format sagt Git, dass es ssh verwenden soll, um sich bei host mit Benutzernamen user . Von git help clone :

Eine alternative scp-ähnliche Syntax kann auch mit dem ssh-Protokoll verwendet werden:

[user@]host.xz:path/to/repo.git/

Der Teil vor dem @ ist der Benutzername, und die Authentifizierungsmethode (Kennwort, öffentlicher Schlüssel usw.) wird von ssh bestimmt, nicht von Git. Git hat keine Möglichkeit, ein Passwort an ssh zu übergeben, da ssh je nach Konfiguration des entfernten Servers möglicherweise nicht einmal ein Passwort verwendet.

Utilice ssh-agent um die ständige Eingabe von Passwörtern zu vermeiden

Wenn Sie Ihr ssh-Passwort nicht ständig eintippen wollen, ist die typische Lösung, dass Sie ein öffentliches/privates Schlüsselpaar erzeugen legen Sie den öffentlichen Schlüssel in Ihrem ~/.ssh/authorized_keys Datei auf dem entfernten Server, und laden Sie Ihren privaten Schlüssel in ssh-agent . Siehe auch Git über SSH für eine einmalige Anmeldung konfigurieren , GitHub's Hilfeseite zu ssh-Schlüsselpasswörtern , ssh-Dokumentation von gitolite y Dokumentation der ssh-Schlüssel von Heroku .

Die Wahl zwischen mehreren Konten bei GitHub (oder Heroku oder...)

Wenn Sie mehrere Konten bei einem Anbieter wie GitHub oder Heroku haben, verfügen Sie über mehrere ssh-Schlüssel (mindestens einen pro Konto). Um auszuwählen, mit welchem Konto Sie sich anmelden möchten, müssen Sie ssh mitteilen, welcher private Schlüssel verwendet werden soll .

Nehmen wir zum Beispiel an, Sie hätten zwei GitHub-Konten: foo y bar . Ihr ssh-Schlüssel für foo ist ~/.ssh/foo_github_id und Ihren ssh-Schlüssel für bar ist ~/.ssh/bar_github_id . Sie möchten Zugang zu git@github.com:foo/foo.git mit Ihrem foo Konto und git@github.com:bar/bar.git mit Ihrem bar Konto. Sie würden Folgendes zu Ihrem Konto hinzufügen ~/.ssh/config :

Host gh-foo
    Hostname github.com
    User git
    IdentityFile ~/.ssh/foo_github_id
Host gh-bar
    Hostname github.com
    User git
    IdentityFile ~/.ssh/bar_github_id

Sie würden dann die beiden Repositories wie folgt klonen:

git clone gh-foo:foo/foo.git  # logs in with account foo
git clone gh-bar:bar/bar.git  # logs in with account bar

Gänzlich auf ssh verzichten

Einige Dienste bieten HTTP-Zugang als Alternative zu ssh:

  • GitHub:

    https://username:password@github.com/username/repository.git
  • Gitorious:

    https://username:password@gitorious.org/project/repository.git
  • Heroku: Siehe diesen Support-Artikel .

WARNUNG : Wenn Sie Ihr Passwort zur Klon-URL hinzufügen, speichert Git Ihr Klartext-Passwort in .git/config . Um Ihr Kennwort bei der Verwendung von HTTP sicher zu speichern, verwenden Sie einen Credential Helper. Zum Beispiel:

git config --global credential.helper cache
git config --global credential.https://github.com.username foo
git clone https://github.com/foo/repository.git

In diesem Fall fragt Git alle 15 Minuten nach Ihrem Passwort (Standardeinstellung). Siehe git help credentials für Einzelheiten.

144voto

Anshuman Bardhan Punkte 1780

Befolgen Sie diese Argumente, um sie durch Sonderfälle zu ersetzen, wenn sie ein Problem darstellen:

 !   #   $   &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]

%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

90voto

Rob Rose Punkte 1560

In den Kommentaren von @Bassetassen's répondre hat @plosco erwähnt, dass man die git clone https://<token>@github.com/username/repository.git zumindest von GitHub zu klonen. Ich dachte, ich würde auf, wie das zu tun, zu erweitern, für den Fall, dass jemand über diese Antwort stößt, wie ich tat, beim Versuch, einige Klonen zu automatisieren.

GitHub hat eine sehr handlich Anleitung, wie man das macht, aber sie geht nicht darauf ein, was zu tun ist, wenn man alles in eine Zeile zu Automatisierungszwecken einfügen will. Es wird gewarnt, dass Das Hinzufügen des Tokens zur Klon-URL speichert es im Klartext in .git/config . Dies ist natürlich 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. Ein Token erstellen

GitHub hat eine den gesamten Leitfaden hier wie man einen Token bekommt, aber hier ist die Kurzfassung.

  1. Gehe zu Einstellungen > Entwicklereinstellungen > Persönliche Zugriffstoken ( hier ist ein direkter Link )
  2. Klicken Sie auf "Generate a New Token" und geben Sie Ihr Passwort erneut ein. (h Hier ist ein weiterer direkter Link )
  3. Legen Sie eine Beschreibung/einen Namen fest, aktivieren Sie die "Repo"-Erlaubnis und klicken Sie auf die Schaltfläche "Token generieren" unten auf der Seite.
  4. Kopieren Sie Ihr neues Token bevor Sie die Seite verlassen

2. Klonen des Repos

Genau wie der Befehl von @plosco, git clone https://<token>@github.com/<username>/<repository>.git ersetzen Sie einfach <token> , <username> y <repository> mit Ihren Informationen.

Wenn Sie es in einen bestimmten Ordner klonen wollen, fügen Sie einfach die Adresse des Ordners am Ende ein, etwa so: git clone https://<token>@github.com/<username>/<repository.git> <folder> donde <folder> ist, Sie haben es erraten, der Ordner, in den er geklont werden soll! Sie können natürlich auch . , .. , ~ usw. wie anderswo auch.

3. Keine Spuren hinterlassen

Je nachdem, wie empfindlich Ihre Arbeit ist, ist vielleicht nicht alles davon notwendig.

  • Sie möchten das Token wahrscheinlich nicht herumliegen lassen, wenn Sie nicht vorhaben, es für einige Zeit zu benutzen, also gehen Sie zurück zum Token-Seite und drücken Sie die Löschtaste daneben.
  • Wenn Sie das Repo nicht mehr benötigen, löschen Sie es rm -rf <folder> .
  • Wenn Sie das Repository wieder benötigen, es aber nicht mehr automatisieren wollen, können Sie die Fernsteuerung entfernen, indem Sie git remote remove origin oder entfernen Sie einfach das Token, indem Sie git remote set-url origin https://github.com/<username>/<repository.git> .
  • Löschen Sie Ihren Bash-Verlauf, um sicherzustellen, dass das Token nicht dort gespeichert bleibt. Es gibt viele Möglichkeiten, dies zu tun, siehe diese Frage y diese Frage . Es kann jedoch einfacher sein, allen oben genannten Befehlen ein Leerzeichen voranzustellen, um zu verhindern, dass sie von vornherein gespeichert werden.

Da ich kein Profi bin, kann es sein, dass die obige Vorgehensweise nicht sicher ist, da keine Spuren für forensische Untersuchungen hinterlassen werden.

48voto

Harshal Deore Punkte 631

Nach dem 13. August 2021 müssen Sie

  • Git-Klon

    https://username:token@github.com/username/repository.git

Zum Erzeugen des Tokens:

Einstellungen >> Entwicklereinstellungen >> Persönliche Zugangstoken >> Neues Token generieren

  • Git-Push

Nach erfolgreichem Klonen werden Sie das nächste Mal, wenn Sie git push müssen Sie den Benutzernamen nicht erneut angeben. Sie können dies bestätigen, indem Sie die .git/config Datei in Notepad wird angezeigt

[remote "origin"]
    url = https://username:tokenxxxxxxxxxx@github.com/username/repo.git

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X