Git Push erfordert Benutzername und Passwort

1436

Ich habe ein Git-Repository von meinem GitHub-Konto auf meinen PC geklont.

Ich möchte sowohl mit meinem PC als auch mit meinem Laptop arbeiten, aber mit einem GitHub-Konto.

Wenn ich versuche, mit meinem PC auf GitHub zu pushen oder von diesem zu ziehen, sind ein Benutzername und ein Passwort erforderlich, aber nicht, wenn ich den Laptop benutze!

Ich möchte nicht bei jeder Interaktion meinen Benutzernamen und mein Passwort eingeben  origin. Was fehlt mir hier?

Zu cool
quelle
1
Ja, aber was soll ich tun? Ich habe den Keygen generiert, was noch?
TooCooL
1
Sie müssen den Pubkey bei Ihrem Github-Konto ( github.com/account/ssh ) registrieren und Ihren SSH-Client so konfigurieren, dass er den richtigen Benutzernamen verwendet.
Jwodder
1
Ich habe das alles getan, aber es erfordert immer noch Benutzername und Passwort! Ist es möglich, ein Konto mit zwei PCs zu verwenden?
TooCooL
1
Diese Frage deckt alle Ihre Optionen für diese ziemlich gut ab: stackoverflow.com/questions/5343068/…
ford
2
Sie müssen nicht mehr auf ssh umschalten. Dies ist auch mit HTTPS möglich. Überprüfen Sie meine Antwort.
Varun Achar

Antworten:

1960

Eine häufige Ursache ist das Klonen mit dem Standard (HTTPS) anstelle von SSH. Sie können dies korrigieren, indem Sie in Ihr Repository gehen, auf "Klonen oder Herunterladen" klicken, dann auf die Schaltfläche "SSH verwenden" über dem URL-Feld klicken und die URL Ihrer Ursprungsfernbedienung wie folgt aktualisieren:

git remote set-url origin [email protected]:username/repo.git

Dies ist bei GitHub dokumentiert: Umschalten von Remote-URLs von HTTPS auf SSH .

Tekkub
quelle
61
Und um herauszufinden , wie die URL zu ändern, gehen Sie hier: stackoverflow.com/a/2432799/60488 (Spoiler: git remote set-url origin git://new.url.here)
Johan Kool
136
Wenn Sie ssh nicht für Sicherheitsbeschränkungen verwenden können (wie ich), können Sie Folgendes tun: git remote set-url origin https://name:[email protected]/repo.git (Auszug aus einem Kommentar hier)
Bruno Berisso
134
Warum ist das Klonen mit HTTPS ein häufiger Fehler? GitHub empfiehlt jetzt die Verwendung von HTTPS.
Dennis
8
@smftre ist standardmäßig der Fall, aber Sie können einen Helfer verwenden, um Ihre Anmeldeinformationen zwischenzuspeichern .
Dennis
28
Die Permission denied (publickey)Verwendung dieses Handbuchs wurde behoben : help.github.com/articles/generating-ssh-keys .
Voltrevo
386

Permanente Authentifizierung mit Git-Repositorys

Führen Sie den folgenden Befehl aus, um das Caching von Anmeldeinformationen zu aktivieren :

$ git config credential.helper store
$ git push https://github.com/owner/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>

Sie sollten auch angeben, dass das Caching abläuft .

git config --global credential.helper 'cache --timeout 7200'

Nach dem Aktivieren des Caching von Anmeldeinformationen wird dieser für 7200 Sekunden (2 Stunden) zwischengespeichert .

Jay Patel
quelle
Möglicherweise müssen Sie auch Ihre Remote-URL ändern mit git remote set-url origin https://[email protected]/<owner>/<repo>.git Dies funktioniert auch mit 2FA
Bron Davies
14
Dies sollte die akzeptierte Antwort sein. Es beantwortet genau die Frage.
Abraham TS
Wird es aus Sicherheitsgründen automatisch aus den Ubuntu-Dateien nach 7200 gelöscht?
Usama
oder 43.200 für 12 Stunden. Sie melden sich einmal pro Tag an. Das könnte für manche vernünftiger sein.
Urasquirrel
Ich habe es gerade versucht - habe:fatal: protocol 'https' is not supported
Joel
134

Ich bin gerade auf dasselbe Problem gestoßen, und die einfachste Lösung, die ich gefunden habe, war die Verwendung der SSH-URL anstelle der HTTPS-URL:

ssh://[email protected]/username/repo.git

Und nicht das:

https://github.com/username/repo.git

Sie können jetzt nur mit dem SSH-Schlüssel anstelle des usernameund validieren password.

Anton Salikhmetov
quelle
1
Die einfachste Möglichkeit, das Problem zu beheben, besteht darin, die URL des Remote-Ursprungs zu bearbeiten. Das ist alles. Erledigt. Danke!
JOM
1
Dies funktionierte für mich, aber zuerst musste ich dies ansprechen: stackoverflow.com/questions/2643502/…
Sridhar Sarnobat
Informationen
ksridhar
120

Abgesehen von der Umstellung auf SSH können Sie auch weiterhin HTTPS verwenden, wenn Sie nichts dagegen haben, Ihr Passwort in Klartext zu schreiben. Geben Sie dies in Ihr ein ~/.netrcund es wird nicht nach Ihrem Benutzernamen / Passwort gefragt (zumindest unter Linux und Mac):

machine github.com
       login <user>
       password <password>

Ergänzung (siehe VonCs zweiten Kommentar): Unter Windows lautet der Dateiname %HOME%\_netrc.

Lesen Sie auch den ersten Kommentar von VonC, falls Sie verschlüsseln möchten.

Ein weiterer Zusatz (siehe Kommentar von user137717), den Sie verwenden können, wenn Sie Git 1.7.10 oder neuer haben .

Zwischenspeichern Sie Ihr GitHub-Passwort in Git mit einem Helfer für Anmeldeinformationen :

Wenn Sie GitHub-Repositorys mit HTTPS klonen, können Sie Git mithilfe eines Hilfsprogramms für Anmeldeinformationen anweisen, sich bei jeder Kommunikation mit GitHub Ihren GitHub-Benutzernamen und Ihr Kennwort zu merken.

Dies funktioniert auch unter Linux, Mac und Windows.

Rintcius
quelle
3
Ja, es funktioniert unter Linux, aber nicht für Gitbash unter Windows.
Dielson Sales
3
@dolmen Ich verstehe, was du meinst, aber wenn es dir etwas ausmacht, dein Passwort in einen Klartext zu schreiben , kannst du ... es verschlüsseln;) Siehe stackoverflow.com/a/18362082/6309 . und das ist sogar kompatibel mit der 2-Faktor-Authentifizierung (2FA) von Github: stackoverflow.com/a/18607931/6309
VonC
3
@Sales funktioniert perfekt von einer DOS-Sitzung oder einem Git-Bash unter Windows, vorausgesetzt, Sie rufen Ihre Datei auf %HOME%\_netrc(anstelle von ~/.netrc). Siehe auch stackoverflow.com/a/18362082/6309 , um diese Datei zu verschlüsseln.
VonC
1
Dies funktioniert sehr gut unter Linux, insbesondere mit Git über VPN.
Evan Hu
3
Sie müssen es nicht in Klartext schreiben oder verschlüsseln. Das Hilfsprogramm speichert es für Sie im Cache und die Einrichtung dauert 30 Sekunden. help.github.com/articles/caching-your-github-password-in-git/…
user137717
86

Für die Uneingeweihten, die durch die vorherigen Antworten verwirrt sind, können Sie Folgendes tun:

git remote -v

Welches wird mit so etwas antworten

origin    https://[email protected]/yourname/yourrepo.git (fetch)
origin    https://[email protected]/yourname/yourrepo.git (push)

Dann können Sie den Befehl ausführen, den viele andere vorgeschlagen haben, aber jetzt kennen Sie Ihren Namen und Ihren Repo von oben, sodass Sie ihn einfach ausschneiden und yourname/yourrepo.gitvon oben einfügen können in:

git remote set-url origin [email protected]:yourname/yourrepo.git
Davide
quelle
1
Ich habe es versucht. Es fragt mich paraphrasejedes Mal. Ich habe keinen eingerichtet
Samayo
Was tritt an die Stelle von yourrepo?
Raphi
2
@ Raphi laufen git remote -vund sehen, was herauskommt
Davide
1
Andere Antworten sollten diesen Rat vorangestellt werden.
Bennett Brown
57

Wenn Sie SSH und Ihr privater Schlüssel verwenden wird mit einem Passwort verschlüsseln, dann werden Sie noch aufgefordert, das Passwort / Passwort für den privaten Schlüssel einzugeben , wenn Sie den Netzwerkbetrieb mit Git tun wie push, pull, und fetch.

Verwenden Sie ssh-agent, um die Passphrase / das Kennwort für den privaten Schlüssel zu speichern

Wenn Sie vermeiden möchten, dass Sie Ihre Passphrase jedes Mal eingeben müssen, können Sie ssh-agentIhre Passphrase-Anmeldeinformationen für den privaten Schlüssel einmal pro Terminalsitzung speichern, wie in meiner Antwort auf Konnte keine Verbindung zu Ihrem Authentifizierungsagenten hergestellt werden :

$ eval `ssh-agent -s`
$ ssh-add

In einem Windows-Msysgit-Bash müssen Sie die Ausgabe von auswerten ssh-agent, aber ich bin mir nicht sicher, ob Sie dies auch in anderen Entwicklungsumgebungen und Betriebssystemen tun müssen.

ssh-addSucht in Ihrem Home- .sshOrdner nach einem privaten Schlüssel mit id_rsadem Namen "Standard". Dies ist jedoch der Standardname. Sie können jedoch einen Dateipfad an einen Schlüssel mit einem anderen Namen übergeben.

Den Agenten töten

Wenn Sie mit Ihrer Terminalsitzung fertig sind, können Sie ssh-agentmit dem Kill-Flag herunterfahren -k:

$ ssh-agent -k

Wie im ssh-agentHandbuch erklärt :

-k

Beenden Sie den aktuellen Agenten (angegeben durch die Umgebungsvariable SSH_AGENT_PID).

Optionales Timeout

Es kann auch einen optionalen Timeout-Parameter wie folgt annehmen:

$ ssh-add -t <timeout>

wo <timeout>ist das Format <n>hfür <n>Stunden, <n>mfür <n>Minuten, und so weiter.

Nach dem ssh-agentHandbuch :

-t life

Legen Sie einen Standardwert für die maximale Lebensdauer der dem Agenten hinzugefügten Identitäten fest. Die Lebensdauer kann in Sekunden oder in einem in sshd_config (5) angegebenen Zeitformat angegeben werden . Eine für eine Identität mit ssh-add (1) angegebene Lebensdauer überschreibt diesen Wert. Ohne diese Option ist die maximale Standardlebensdauer für immer.

Weitere Zeitformate finden Sie auf dieser Seite .

Sicherheitswarnung für Cygwin-Benutzer

Cygwin-Benutzer sollten sich eines potenziellen Sicherheitsrisikos bei der Verwendung von ssh-agent in Cygwin bewusst sein :

Personen sollten sich der potenziellen Gefahren von ssh-agent unter Cygwin 1 bewusst sein , obwohl es unter einem lokalen Netstat und Remote-Portscan nicht so aussieht, als ob der in / tmp / ssh-foo angegebene Port für jedermann zugänglich ist ...?

[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html

Und unter dem zitierten Link :

Beachten Sie jedoch, dass die Unix-Domain-Sockets von Cygwin grundsätzlich unsicher sind. Daher rate ich dringend von der Verwendung von ssh-agent unter Cygwin ab.

Wenn Sie ssh-agent unter Cygwin ausführen, wird ein AF_UNIX-Socket im /tmp/ssh-$USERNAME/Verzeichnis erstellt. Unter Cygwin werden AF_UNIX-Sockets über AF_INET-Sockets emuliert. Sie können dies leicht erkennen, wenn Sie die /tmp/ssh-$USERNAME/agent-socket-*Datei über den Editor untersuchen. Du wirst so etwas sehen

!<socket >2080

dann renn netstat -aund überrasche! Sie haben ein Programm, das Port 2080 abhört. Es ist ssh-agent. Wenn ssh eine RSA-Abfrage vom Server empfängt, bezieht es sich auf eine entsprechende /tmp/ssh-$USERNAME/agent-socket-*(in unserem Fall unter Cygwin bedeutet dies, dass die Verbindung zu geöffnet wird localhost:2080) und fordert ssh-agent auf, die RSA-Abfrage mit dem vorhandenen privaten Schlüssel zu verarbeiten, und dann Es leitet einfach die vom SSH-Agenten empfangene Antwort an den Server weiter.

Unter Unix funktioniert ein solches Szenario problemlos, da der Unix-Kernel die Berechtigungen überprüft, wenn das Programm versucht, auf einen AF_UNIX-Socket zuzugreifen. Bei AF_INET-Sockets sind die Verbindungen jedoch anonym (lesen Sie "unsicher"). Stellen Sie sich vor, Sie haben den Cygwin-SSH-Agenten ausgeführt. Ein böswilliger Hacker kann Ihre Box portieren, den von ssh-agent verwendeten offenen Port suchen, eine Verbindung zu Ihrem SSH-Server herstellen, die RSA-Abfrage von ihm empfangen, sie über einen von ihm gefundenen offenen Port an Ihren ssh-Agenten senden und den empfangen RSA-Antwort, senden Sie es an den SSH-Server und voila, er / sie hat sich erfolgreich als Sie bei Ihrem Server angemeldet.

Peter Mortensen
quelle
Klingt schön und detailliert. Ich habe mich um den https-Helfer für Anmeldeinformationen gekümmert , und Sie haben sich um SSH-Verbindungen gekümmert! +1
VonC
49

Quelle: Git einrichten

Der folgende Befehl speichert Ihr Passwort für einige Zeit im Speicher (für Git 1.7.10 oder neuer).

$ git config --global credential.helper cache
# Set git to use the credential memory cache

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after one hour (setting is in seconds)
Sagar Rakshe
quelle
2
Ich bevorzuge die Hilfe zu den Anmeldeinformationen "netrc" ( stackoverflow.com/a/18362082/6309 ), um mehrere Anmeldeinformationen zwischenzuspeichern (ohne sich alle Kennwörter merken zu müssen). Wenn Sie jedoch unter Windows arbeiten und den Speichercache verwenden möchten, benötigen Sie den Winstore ( stackoverflow.com/a/15310274/6309 )
VonC
9
Dies ist meiner Meinung nach die bisher beste Antwort.
Chiel ten Brinke
35

Wenn Sie https für Git Pull & Push verwenden, konfigurieren remote.origin.urlSie es einfach für Ihr Projekt, um zu vermeiden, dass Sie bei jedem Push einen Benutzernamen (oder / und ein Kennwort) eingeben.

So konfigurieren Sie remote.origin.url:

URL-Format:
    https: // {Benutzername: Passwort @} github.com/ {Eigentümer} / {Repo}

Parameter in der URL:

* Benutzername 
Optional, der Benutzername, der bei Bedarf verwendet werden soll.
Authentifizierung, Wenn angegeben, muss der Benutzername bei erneuter Authentifizierung nicht erneut eingegeben werden. Verwenden Sie keine E-Mails. Verwenden Sie Ihren Benutzernamen ohne "@", andernfalls kann die URL nicht korrekt analysiert werden. * Passwort Optional das Kennwort, das bei Bedarf verwendet werden muss. Wenn angegeben, muss das Kennwort bei erneuter Authentifizierung nicht erneut eingegeben werden. Trinkgeld: Dieser Wert wird als einfacher Text gespeichert. Geben Sie diesen Parameter aus Sicherheitsgründen nicht an. * * z.B git config remote.origin.url https: //[email protected]/eric/myproject

@Update - mit ssh

Ich denke, die Verwendung von sshProtokoll ist eine bessere Lösung als https, obwohl der Einrichtungsschritt etwas komplexer ist.

Grobe Schritte:

  • Erstellen Sie SSH-Schlüssel mit einem Befehl, z. B. ssh-keygenunter Linux. Windows msysgitbietet ähnliche Befehle.
  • Bewahren Sie den privaten Schlüssel auf dem lokalen Computer an einem geeigneten Ort auf, z ~/.ssh. Und fügen Sie es dem ssh-addBefehl ssh agent per Befehl hinzu.
  • Laden Sie den öffentlichen Schlüssel auf den Git-Server hoch.
  • Änderung remote.origin.urldes Git-Repositorys zum sshStil, z.[email protected]:myaccount/myrepo.git
  • Wenn Sie dann ziehen oder drücken, müssen Sie niemals den Benutzernamen oder das Passwort eingeben.

Tipps:

  • Wenn Ihr SSH-Schlüssel eine Passphrase hat, müssen Sie diese standardmäßig bei der ersten Verwendung des Schlüssels nach jedem Neustart Ihres Computers eingeben.

@Update - Wechseln zwischen httpsund sshProtokoll.

Eine remote.origin.urleinfache Änderung reicht aus, oder Sie können sie repo_home/.git/configdirekt bearbeiten , um den Wert zu ändern (z. B. unter viLinux).

Normalerweise füge ich für jedes Protokoll eine Zeile hinzu und kommentiere eine davon mit aus #.

Z.B

[entfernter "Ursprung"]
        url = [email protected]: myaccount / myrepo.git
        # url = https: //[email protected]/myaccount/myrepo.git
        fetch = + refs / heads / *: refs / remotes / origin / *
Eric Wang
quelle
Sind Sie sicher, dass die auf http [s] basierende URL die Erweiterung des Benutzernamens unterstützt? Das Handbuch git-fetch(1)erwähnt dies nur für git/ ssh-basierte URLs.
Tag
@plmday ja, ich benutze es, meine Git-Version ist 1.8.2.3 und 1.8.4, ich bin nicht sicher, ob sich höhere Versionen daran ändern.
Eric Wang
1
Hinweis: Wenn Sie Ihr Kennwort in der URL angeben (auch bei Verwendung von HTTPS), ist es für alles zwischen Ihnen und Ihrem Repository sichtbar.
William
3
Nein, die Eingabe des Passworts https://username:[email protected]/ist sicher. Siehe stackoverflow.com/questions/4980912/…
slowhand
1
Und das war es, wonach ich gesucht habe (für die vollständige Automatisierung)
Joshua
16

Sie können Ihr GitHub-Passwort in Git zwischenspeichern:

Folgen Sie einfach den Anweisungen aus der offiziellen Dokumentation von GitHub .

Nachdem Sie die Anweisungen über den obigen Link befolgt haben, sollten Sie in der Lage sein, in Ihr Repository zu wechseln, ohne jedes Mal Ihren Benutzernamen / Ihr Passwort einzugeben.

KM Rakibul Islam
quelle
5
Dies ist die beste Antwort hier und sollte die akzeptierte sein IMO
TheZuck
1
Einverstanden sollte eine Antwort unter Berufung auf die offiziellen Unterlagen Vorrang haben. Ich habe ihre Anweisungen gerne befolgt und bevorzuge Standardkonventionen.
Johnnieb
10

Hier ist eine weitere Option:

Anstatt zu schreiben

git push origin HEAD

Sie könnten schreiben:

git push https://user:[email protected]/path HEAD

Bei den meisten Shells führt dies natürlich dazu, dass das Kennwort im Verlauf zwischengespeichert wird. Denken Sie also daran.

Lacho Tomov
quelle
1
Wenn Sie in Bash ein oder mehrere führende Leerzeichen hinzufügen , wird dies normalerweise aus der Geschichte herausgehalten. Aber nicht in Git Bash .
Peter Mortensen
Das hat einfach bei mir funktioniert :)
Naveen Kumar V
9

Was für mich funktioniert hat, war zu bearbeiten .git/configund zu verwenden

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

Es versteht sich von selbst, dass dies eine unsichere Methode zum Speichern Ihres Passworts ist, aber es gibt Umgebungen / Fälle, in denen dies möglicherweise kein Problem darstellt.

WoJ
quelle
6

Wenn der SSH-Schlüssel oder die SSH- .netrcDatei für Sie nicht funktioniert hat, ist git-credential-store eine weitere einfache, aber weniger sichere Lösung, die für Sie funktionieren könnte - Helfer zum Speichern von Anmeldeinformationen auf der Festplatte:

git config --global credential.helper store

Standardmäßig werden Anmeldeinformationen in einer Datei gespeichert ~/.git-credentials. Es wird erstellt und geschrieben.

Bitte beachten Sie, dass bei Verwendung dieses Hilfsprogramms Ihre Kennwörter unverschlüsselt auf der Festplatte gespeichert werden und nur durch Dateisystemberechtigungen geschützt sind. Wenn dies möglicherweise kein akzeptabler Kompromiss für die Sicherheit ist.

rumman0786
quelle
5

Ich hatte das gleiche Problem.

Also habe ich die .git/configDatei aus meinem Projekt geändert ,

url = https://github.com/<your-user-here>/<your-repo-here>

zu

url = [email protected]:<your-user-here>/<your-repo-here>

und fügte den öffentlichen SSH-Schlüssel zum Git-Profil hinzu, das sich in der Einstellung befindet.

Für den öffentlichen SSH-Schlüssel:

cat ~/.ssh/id_rsa.pub
Shrikant
quelle
1
mit cat ~/.ssh/id_rsa.pubden rsa-Schlüssel holen und in die Git-Webportal-Einstellung einfügen.
Anupam Maurya
4

Update für HTTPS:

GitHub hat ein neues Programm für Windows gestartet, in dem Ihre Anmeldeinformationen gespeichert werden, wenn Sie HTTPS verwenden:

Benutzen:

  • Laden Sie das Programm hier herunter

  • Sobald Sie das Programm ausführen, wird Ihre .gitconfigDatei bearbeitet . Überprüfen Sie erneut, ob das richtige bearbeitet .gitconfigwurde, falls Sie mehrere davon haben. Wenn es nicht das richtige bearbeitet hat, fügen Sie Folgendes zu Ihrem hinzu.gitconfig

    [credential]
        helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'
    

    HINWEIS der Zeilenumbruch danach [credential]. Es ist notwendig.

  • Öffnen Sie Ihren Befehlszeilen-Client und versuchen Sie es git push origin mastereinmal. Wenn Sie nach einem Passwort gefragt werden, geben Sie es ein und Sie sind fertig. Passwort gespeichert!

Varun Achar
quelle
Danke Varun, hat Charme gearbeitet!
Joyy
4

Wenn Windows Git-Benutzer nach dem Ausführen git config --global credential.helper storeimmer noch zur Eingabe eines Kennworts auffordern, sollten Sie mit diesem Befehl überprüfen, wohin die Konfigurationsdatei geschrieben wird

git config --list --show-origin

In meinem Fall hat es funktioniert, nachdem die Konfigurationsdatei 'C: \ Programme \ Git \ mingw64 \ etc \ gitconfig' manuell bearbeitet und der folgende Text hinzugefügt wurde.

[credential]
    helper = store
Liang
quelle
3

Sie haben grundsätzlich zwei Möglichkeiten.

Wenn Sie auf beiden Computern denselben Benutzer verwenden, müssen Sie den .pub-Schlüssel auf Ihren PC kopieren, damit GitHub weiß, dass Sie derselbe Benutzer sind.

Wenn Sie eine neue .pub-Datei für Ihren PC erstellt haben und die Computer als unterschiedliche Benutzer behandeln möchten, müssen Sie die neue .pub-Datei auf der GitHub-Website registrieren.

Wenn dies immer noch nicht funktioniert, liegt dies möglicherweise daran, dass ssh nicht richtig konfiguriert ist und ssh den Speicherort Ihrer Schlüssel nicht findet. Versuchen

ssh -vv [email protected]

Um weitere Informationen zu erhalten, warum SSH fehlschlägt.

ralphtheninja
quelle
3

Aktualisieren Sie Ihre Git-Konfigurationsdatei direkt ( wenn Sie sich keine ausgefallenen Befehle merken möchten ):

Öffnen Sie Ihre .git/configDatei in Ihrem bevorzugten Texteditor. Es befindet sich in dem Ordner, den Sie geklont haben, oder in dem Repository, in dem Sie ausgeführt haben git init. Wechseln Sie in dieses Repository. .gitist ein versteckter Ordner, und durch Drücken von Ctrl+ Hsollte der versteckte Ordner ( ls -aim Terminal) angezeigt werden.

Unten finden Sie ein Beispiel für die .git/configDatei. Kopieren Sie diese Zeilen und fügen Sie sie ein. Aktualisieren Sie diese Zeilen mit Ihren Git-Informationen.

[user]
        name = Tux
        email = [email protected]
        username = happy_feet

[remote "origin"]
        url = https://github.com/happy_feet/my_code.git
        fetch = +refs/heads/*:refs/remotes/origin/*

Ändern Sie den URL-Teil mit dem folgenden Format für SSH:

url = [email protected]:happy_feet/my_code.git

( Die oben genannten Formate ändern sich nicht bei verschiedenen Git-Remote-Servern wie GitHub oder Bitbucket. Dies gilt auch, wenn Sie Git zur Versionskontrolle verwenden. )

Hinweis: Für die SSH-Verbindung zu einem Remote-Git-Repository müssen Sie Ihren öffentlichen SSH-Schlüssel zu Ihrem Git-Remote-Server hinzufügen (z. B. GitHub oder Bitbucket. Durchsuchen Sie die Einstellungsseite nach SSH-Schlüsseln ).

Informationen zum Generieren Ihrer SSH-Schlüssel finden Sie unter: Erstellen von SSH-Schlüsseln

Survesh Jones
quelle
2

Das hat bei mir funktioniert:

git remote set-url origin https://[email protected]/username/reponame.git

Beispiel:

git remote set-url origin https://[email protected]/jsmith/master.git
user5854766
quelle
Vielen Dank, ich stimme Ihrer Antwort zu
Mandeep Singh
2

Sie müssen zwei Schritte ausführen -

  1. git remote remove origin
  2. git remote add origin [email protected]:NuggetAI/nugget.git

Beachten Sie, dass die Git-URL eine SSH-URL und keine HTTPS-URL ist. Sie können hier auswählen:

Geben Sie hier die Bildbeschreibung ein

sapy
quelle
2

Wenn Sie HTTPS anstelle von SSH geklont haben und beim Ziehen, Drücken und Abrufen Probleme mit der Eingabeaufforderung für Benutzername und Kennwort auftreten. Sie können dieses Problem einfach für UBUNTU lösen

Schritt 1: Wechseln Sie in das Stammverzeichnis

cd ~/

Erstellen Sie eine Datei .git-Anmeldeinformationen

Fügen Sie diesen Inhalt mit Ihnen usename passwordund zu dieser Datei hinzugithosting URL

https://user:[email protected]

Führen Sie dann den Befehl aus

git config --global credential.helper store

Jetzt können Sie problemlos alle Details aus Ihrem Repo ziehen und abrufen.

Akhilraj NS
quelle
0

Wie viele Benutzer bereits gesagt haben, müssen Sie lediglich Ihre Git-Repository-URL von HTTPS in SSH ändern.

Wenn Sie auf Ihrem Computer keinen SSH-Schlüssel generiert haben, müssen Sie dies tun.

Nur als zusätzliche Information, nach dieser Änderung wurde immer noch der gleiche Fehler angezeigt:

Zugang verweigert.

In meinem Fall bestand das Problem darin, dass ich die Windows-Shell zum Ausführen des Befehls ngh verwendete. Da dieser Befehl eine Eingabeaufforderung zum Anfordern der SSH-Phrase öffnen sollte und die Windows-Shell diese Art von Eingabeaufforderungen nicht öffnet, ist die Authentifizierung einfach fehlgeschlagen.

Also musste ich nur die Git-Shell öffnen und dort den Befehl ngh ausführen, die SSH-Phrase jedes Mal in die Eingabeaufforderung einfügen, wenn sie danach fragte, und "voilà" ... Es hat einfach gut funktioniert!

Thisisalexis
quelle
0
    # create the company identity file
    ssh-keygen -t rsa -b 4096 -C "[email protected]"
    # save private key to ~/.ssh/id_rsa.corp, 
    cat ~/.ssh/id_rsa.corp.pub # copy paste this string into your corp web ui security ssh keys

    # create your private identify file
    ssh-keygen -t rsa -b 4096 -C "[email protected]"
    # save private key to ~/.ssh/id_rsa.me, note the public key ~/.ssh/id_rsa.me.pub
    cat ~/.ssh/id_rsa.me.pub # copy paste this one into your githubs, private keys

    # clone company internal repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone [email protected]:corp/project.git

    export git_msg="my commit msg with my corporate identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <[email protected]>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # clone public repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone [email protected]:acoolprojectowner/coolproject.git

    export git_msg="my commit msg with my personal identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <[email protected]>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.me -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # stop :: how-to use different ssh identity files
Yordan Georgiev
quelle