Warum fragt Github nach Benutzername / Passwort, wenn er den Anweisungen auf dem Bildschirm folgt und ein neues Repo erstellt?

298

Ich bin der Besitzer einer Organisation auf Github und habe gerade ein Repo erstellt und versucht zu pushen, aber ich stoße auf ein Problem, bei dem ich nach meinem Benutzernamen gefragt werde, obwohl ich SSH gut kann:

$ ssh -T [email protected]
Hi Celc! You've successfully authenticated, but GitHub does not provide shell access.
$ git add .
$ git commit -m 'first commit'
[master (root-commit) 3f1b963] first commit
 6 files changed, 59 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 main.js
 create mode 100644 package.json
 create mode 100644 readme.markdown
 create mode 100644 views/index.ejs
 create mode 100644 views/layout.ejs
$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git push -u origin master
Username for 'https://github.com':

Was mache ich falsch? Das ist mir noch nie passiert, aber ich habe kürzlich auch ein Upgrade auf Git 1.7.10.3 durchgeführt.

Kit Sunde
quelle

Antworten:

662

Verwenden Sie kein HTTP, sondern SSH

Veränderung

https://github.com/WEMP/project-slideshow.git 

zu

[email protected]:WEMP/project-slideshow.git

Sie können es in .git/configDatei tun

Hugo
quelle
1
Vielen Dank! Ich habe das gerade herausgefunden, nachdem ich stackoverflow.com/a/10126412/29347 gelesen hatte. Ich glaube nicht, dass Github mir normalerweise eine Repo-Fernbedienung als HTTPS gibt, was einige Verwirrung stiftete.
Kit Sunde
2
Sie können diese Option ändern, indem Sie auf die Schaltfläche klicken, auf die Sie Ihre Klon-URL kopieren.
Derek Adair
Für MacOS. Problem beim Upgrade auf die neuesten Macos. stackoverflow.com/a/39616339/1445102
1Rhino
12
Sie können dies auch tun git remote set-url origin [email protected]:user/repo.git, wie unter stackoverflow.com/questions/10126381/… beschrieben
und schließlich am
54

Ich hatte das gleiche Problem und fragte mich, warum es nicht mit einem Bitbucket-Repo passiert ist, das mit https geklont wurde. Bei näherer Betrachtung stellte ich fest, dass die Konfiguration für das BB-Repo eine URL enthielt, die meinen Benutzernamen enthielt. Also habe ich die Konfiguration für mein GH-Repo wie folgt manuell bearbeitet und voila, keine Eingabeaufforderung mehr für den Benutzernamen. Ich bin unter Windows.

Bearbeiten your_repo_dir/.git/config(denken Sie daran: .gitOrdner ist versteckt)

Veränderung:

https://github.com/WEMP/project-slideshow.git

zu:

https://*username*@github.com/WEMP/project-slideshow.git

Speicher die Datei. Mach ein git pull, um es zu testen.

Der richtige Weg, dies zu tun, ist wahrscheinlich die Verwendung von Git-Bash-Befehlen zum Bearbeiten der Einstellung, aber das direkte Bearbeiten der Datei schien kein Problem zu sein.

Sean
quelle
Das ist ein guter Punkt, wenn Sie den Benutzernamen angeben, wird dieser vom Betriebssystem-Schlüsselbund verarbeitet (zumindest sollte dies unter OSX und anscheinend auch unter Windows der Fall sein). Es gibt keinen Unterschied zwischen dem Bearbeiten der Datei mit dem Editor oder mit vim / emacs / nano / vi. Ich würde mir keine Sorgen um technischen Snobismus machen, es ist sowieso nur eine reine Textdatei.
Kit Sunde
20

Hier ist eine offizielle Antwort darauf:

Wenn Git Sie bei jedem Versuch, mit GitHub zu interagieren, zur Eingabe eines Benutzernamens und eines Kennworts auffordert, verwenden Sie wahrscheinlich die HTTPS-Klon-URL für Ihr Repository.

Die Verwendung einer HTTPS-Remote-URL bietet einige Vorteile: Sie ist einfacher einzurichten als SSH und funktioniert normalerweise über strenge Firewalls und Proxys. Sie werden jedoch auch aufgefordert, Ihre GitHub-Anmeldeinformationen jedes Mal einzugeben, wenn Sie ein Repository abrufen oder verschieben.

Sie können Git so konfigurieren, dass Ihr Passwort für Sie gespeichert wird. Wenn Sie dies einrichten möchten, lesen Sie alles über das Einrichten des Kennwort-Caching .

Catalin Hritcu
quelle
1
Vielen Dank. Ich würde mit Github argumentieren, dass es nicht einfacher ist, es einzurichten, wenn Sie hier landen (:
ecoologic
Dies ist eine Antwort auf eine Frage, da die Frage lautet: WARUM ?
Eli
14

Verbesserung der Antwort von @ Ianl ,

Wenn die zweistufige Authentifizierung aktiviert ist, müssen Sie anscheinend ein Token anstelle eines Kennworts verwenden. Sie können hier ein Token generieren .

Wenn Sie die Eingabeaufforderungen für den Benutzernamen und das Kennwort deaktivieren möchten, können Sie die URL wie folgt festlegen:

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git

Beachten Sie, dass die URL sowohl den Benutzernamen als auch das Passwort enthält. Außerdem sollte die .git/configDatei Ihre aktuellen Einstellungen anzeigen.


Update 20200128:

Wenn Sie das Kennwort nicht in der Konfigurationsdatei speichern möchten, können Sie Ihr persönliches Token generieren und das Kennwort durch das Token ersetzen. Hier sind einige Details .

Es würde so aussehen -

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git
kaushal
quelle
Ist das sicher? Kann jemand einfach von meinem Computer aus auf diese Informationen zugreifen?
Akaisteph7
Ja, sie können von Ihrem Computer aus darauf zugreifen, da sie im Klartext in einer .git/configDatei gespeichert sind
kaushal
11

ein zusätzlicher Hinweis:

Wenn Sie bereits eine Fernbedienung hinzugefügt haben ($ git remote add origin ...) und diese bestimmte Fernbedienung ändern müssen, entfernen Sie zuerst eine Fernbedienung ($ git remote rm origin), bevor Sie die neue und verbesserte Repo-URL erneut hinzufügen (wobei "Ursprung" war der Name für das Remote-Repo.

So verwenden Sie das ursprüngliche Beispiel:

$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git remote rm origin
$ git remote add origin https://[email protected]/WEMP/project-slideshow.git
IanI
quelle
4
Sie müssen die Fernbedienung nicht entfernen. Sie können einfach die URL ändern:git remote set-url origin https://[email protected]/WEMP/project-slideshow.git
Shovavnik
8

Wenn Sie HTTPS verwenden, überprüfen Sie, ob Ihre URL korrekt ist. Zum Beispiel:

$ git clone https://github.com/wellle/targets.git
Cloning into 'targets'...
Username for 'https://github.com': ^C

$ git clone https://github.com/wellle/targets.vim.git
Cloning into 'targets.vim'...
remote: Counting objects: 2182, done.
remote: Total 2182 (delta 0), reused 0 (delta 0), pack-reused 2182
Receiving objects: 100% (2182/2182), 595.77 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1044/1044), done.
ein bezahlter Nerd
quelle
1
Das ist ein großartiger Punkt! Wenn die URL einen Tippfehler enthält, werden Sie aufgefordert, den Benutzernamen einzugeben, anstatt darauf hingewiesen zu werden, dass das Repository nicht vorhanden ist.
Dmitrii
5

Ich habe gerade eine E-Mail von einem Administrator von github.com erhalten, in der Folgendes angegeben ist: "Wir empfehlen normalerweise Benutzern, die HTTPS-URL zu verwenden, es sei denn, sie haben einen bestimmten Grund, das SSH-Protokoll zu verwenden. HTTPS ist also sicher und einfacher einzurichten Wir verwenden dies standardmäßig, wenn ein neues Repository erstellt wird. "

Die Passwortabfrage akzeptiert tatsächlich die normalen Anmeldedaten von github.com. Ein Tutorial zum Einrichten des Kennwort-Caching finden Sie unter https://help.github.com/articles/set-up-git#password-caching . Ich habe die Schritte im Tutorial befolgt und es hat bei mir funktioniert.

jochen
quelle
4

Weil Sie HTTPS verwenden . HTTPS erfordert, dass Sie Ihren Kontozugriff jedes Mal eingeben, wenn Sie versuchen, zu pushen oder zu ziehen , aber es gibt auch eine Möglichkeit, SSH , und Sie können git mitteilen, dass ich Ihnen mit meinem Konto die Erlaubnis für diesen PC erteile und niemals danach frage mir nochmal über jeden benutzerzugriff . Um es zu verwenden, müssen Sie den SSH- Schlüssel generieren und ihn nur einmal in Ihr Github-Konto einfügen. Dazu können Sie die folgenden Schritte ausführen

So generieren Sie einen SSH-Schlüssel für Github

Hazarapet Tunanyan
quelle
4

Wenn Sie die Zwei-Faktor-Authentifizierung aktiviert haben, müssen Sie ein persönliches Zugriffstoken generieren und dieses anstelle Ihres regulären Kennworts verwenden. Weitere Informationen hier: https://help.github.com/articles/creating-an-access-token-for-command-line-use/

Neil
quelle
Neil Ich glaube, dies ist eine nützliche Information, aber ich bezweifle, dass sie möglicherweise nicht als Antwort qualifiziert ist.
Instinkt