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?
Antworten:
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:
Dies ist bei GitHub dokumentiert: Umschalten von Remote-URLs von HTTPS auf SSH .
quelle
git remote set-url origin git://new.url.here
)git remote set-url origin https://name:[email protected]/repo.git
(Auszug aus einem Kommentar hier)Permission denied (publickey)
Verwendung dieses Handbuchs wurde behoben : help.github.com/articles/generating-ssh-keys .Permanente Authentifizierung mit Git-Repositorys
Führen Sie den folgenden Befehl aus, um das Caching von Anmeldeinformationen zu aktivieren :
Sie sollten auch angeben, dass das Caching abläuft .
Nach dem Aktivieren des Caching von Anmeldeinformationen wird dieser für 7200 Sekunden (2 Stunden) zwischengespeichert .
quelle
git remote set-url origin https://[email protected]/<owner>/<repo>.git
Dies funktioniert auch mit 2FAfatal: protocol 'https' is not supported
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:
Und nicht das:
Sie können jetzt nur mit dem SSH-Schlüssel anstelle des
username
und validierenpassword
.quelle
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
~/.netrc
und es wird nicht nach Ihrem Benutzernamen / Passwort gefragt (zumindest unter Linux und Mac):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 :
Dies funktioniert auch unter Linux, Mac und Windows.
quelle
%HOME%\_netrc
(anstelle von~/.netrc
). Siehe auch stackoverflow.com/a/18362082/6309 , um diese Datei zu verschlüsseln.Für die Uneingeweihten, die durch die vorherigen Antworten verwirrt sind, können Sie Folgendes tun:
Welches wird mit so etwas antworten
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.git
von oben einfügen können in:quelle
paraphrase
jedes Mal. Ich habe keinen eingerichtetyourrepo
?git remote -v
und sehen, was herauskommtWenn 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
, undfetch
.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-agent
Ihre 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 :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-add
Sucht in Ihrem Home-.ssh
Ordner nach einem privaten Schlüssel mitid_rsa
dem 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-agent
mit dem Kill-Flag herunterfahren-k
:Wie im
ssh-agent
Handbuch erklärt :Optionales Timeout
Es kann auch einen optionalen Timeout-Parameter wie folgt annehmen:
wo
<timeout>
ist das Format<n>h
für<n>
Stunden,<n>m
für<n>
Minuten, und so weiter.Nach dem
ssh-agent
Handbuch :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 :
Und unter dem zitierten Link :
quelle
Quelle: Git einrichten
Der folgende Befehl speichert Ihr Passwort für einige Zeit im Speicher (für Git 1.7.10 oder neuer).
quelle
Wenn Sie https für Git Pull & Push verwenden, konfigurieren
remote.origin.url
Sie 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
:@Update - mit
ssh
Ich denke, die Verwendung von
ssh
Protokoll ist eine bessere Lösung alshttps
, obwohl der Einrichtungsschritt etwas komplexer ist.Grobe Schritte:
ssh-keygen
unter Linux. Windowsmsysgit
bietet ähnliche Befehle.~/.ssh
. Und fügen Sie es demssh-add
Befehl ssh agent per Befehl hinzu.remote.origin.url
des Git-Repositorys zumssh
Stil, z.[email protected]:myaccount/myrepo.git
Tipps:
@Update - Wechseln zwischen
https
undssh
Protokoll.Eine
remote.origin.url
einfache Änderung reicht aus, oder Sie können sierepo_home/.git/config
direkt bearbeiten , um den Wert zu ändern (z. B. untervi
Linux).Normalerweise füge ich für jedes Protokoll eine Zeile hinzu und kommentiere eine davon mit aus
#
.Z.B
quelle
git-fetch(1)
erwähnt dies nur fürgit
/ssh
-basierte URLs.https://username:[email protected]/
ist sicher. Siehe stackoverflow.com/questions/4980912/…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.
quelle
Hier ist eine weitere Option:
Anstatt zu schreiben
Sie könnten schreiben:
Bei den meisten Shells führt dies natürlich dazu, dass das Kennwort im Verlauf zwischengespeichert wird. Denken Sie also daran.
quelle
Was für mich funktioniert hat, war zu bearbeiten
.git/config
und zu verwendenEs 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.
quelle
Wenn der SSH-Schlüssel oder die SSH-
.netrc
Datei 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: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.
quelle
Ich hatte das gleiche Problem.
Also habe ich die
.git/config
Datei aus meinem Projekt geändert ,zu
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:
quelle
cat ~/.ssh/id_rsa.pub
den rsa-Schlüssel holen und in die Git-Webportal-Einstellung einfügen.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
.gitconfig
Datei bearbeitet . Überprüfen Sie erneut, ob das richtige bearbeitet.gitconfig
wurde, falls Sie mehrere davon haben. Wenn es nicht das richtige bearbeitet hat, fügen Sie Folgendes zu Ihrem hinzu.gitconfig
HINWEIS der Zeilenumbruch danach
[credential]
. Es ist notwendig.Öffnen Sie Ihren Befehlszeilen-Client und versuchen Sie es
git push origin master
einmal. Wenn Sie nach einem Passwort gefragt werden, geben Sie es ein und Sie sind fertig. Passwort gespeichert!quelle
Wenn Windows Git-Benutzer nach dem Ausführen
git config --global credential.helper store
immer noch zur Eingabe eines Kennworts auffordern, sollten Sie mit diesem Befehl überprüfen, wohin die Konfigurationsdatei geschrieben wirdIn meinem Fall hat es funktioniert, nachdem die Konfigurationsdatei 'C: \ Programme \ Git \ mingw64 \ etc \ gitconfig' manuell bearbeitet und der folgende Text hinzugefügt wurde.
quelle
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
Um weitere Informationen zu erhalten, warum SSH fehlschlägt.
quelle
Aktualisieren Sie Ihre Git-Konfigurationsdatei direkt ( wenn Sie sich keine ausgefallenen Befehle merken möchten ):
Öffnen Sie Ihre
.git/config
Datei in Ihrem bevorzugten Texteditor. Es befindet sich in dem Ordner, den Sie geklont haben, oder in dem Repository, in dem Sie ausgeführt habengit init
. Wechseln Sie in dieses Repository..git
ist ein versteckter Ordner, und durch Drücken von Ctrl+ Hsollte der versteckte Ordner (ls -a
im Terminal) angezeigt werden.Unten finden Sie ein Beispiel für die
.git/config
Datei. Kopieren Sie diese Zeilen und fügen Sie sie ein. Aktualisieren Sie diese Zeilen mit Ihren Git-Informationen.Ändern Sie den URL-Teil mit dem folgenden Format für SSH:
( 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
quelle
Das hat bei mir funktioniert:
Beispiel:
quelle
Sie müssen zwei Schritte ausführen -
git remote remove origin
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:
quelle
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
Erstellen Sie eine Datei .git-Anmeldeinformationen
Fügen Sie diesen Inhalt mit Ihnen
usename
password
und zu dieser Datei hinzugithosting URL
Führen Sie dann den Befehl aus
Jetzt können Sie problemlos alle Details aus Ihrem Repo ziehen und abrufen.
quelle
Wenn Sie Git (z. B. Git Bash) unter Windows verwenden (und nicht von HTTPS zu SSH wechseln möchten), können Sie auch Git Credential Manager für Windows verwenden
Diese Anwendung behält den Benutzernamen und das Passwort für Sie ...
quelle
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:
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!
quelle
quelle