Dlaczego Github pyta o nazwę użytkownika / hasło, postępując zgodnie z instrukcjami wyświetlanymi na ekranie i wysyłając nowe repozytorium?

298

Jestem właścicielem organizacji na github, właśnie utworzyłem repozytorium i próbowałem wypchnąć, ale napotyka mnie problem polegający na tym, że pyta mnie o moją nazwę użytkownika, mimo że mogę SSH dobrze:

$ 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':

Co ja robię źle? Nigdy wcześniej mi się to nie zdarzyło, ale ostatnio zaktualizowałem do wersji git 1.7.10.3.

Kit Sunde
źródło

Odpowiedzi:

662

Nie używaj HTTP zamiast SSH

zmiana

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

do

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

możesz to zrobić w .git/configpliku

Hugo
źródło
1
Dzięki! Właśnie zorientowałem się po przeczytaniu stackoverflow.com/a/10126412/29347 , nie sądzę, że github zwykle daje mi zdalne repo jako HTTPS, co spowodowało pewne zamieszanie.
Kit Sunde
2
Możesz zmienić tę opcję, klikając przycisk, w którym kopiujesz swój adres URL klonowania.
Derek Adair
W systemie MacOS. Problem występujący podczas aktualizacji do najnowszego makra. stackoverflow.com/a/39616339/1445102
Rhino
12
Możesz także zrobić git remote set-url origin [email protected]:user/repo.git, jak opisano w stackoverflow.com/questions/10126381/…
I wreszcie
54

Miałem ten sam problem i zastanawiałem się, dlaczego tak się nie stało z repozytorium bitbucket sklonowanym za pomocą https. Przyglądając się trochę, znalazłem, że konfiguracja repozytorium BB miała adres URL zawierający moją nazwę użytkownika. Więc ręcznie edytowałem konfigurację dla mojego repozytorium GH w ten sposób i voila, nie więcej monitu o nazwę użytkownika. Jestem na Windowsie.

Edytuj your_repo_dir/.git/config(pamiętaj: .gitfolder jest ukryty)

Zmiana:

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

do:

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

Zapisz plik. Zrób to, git pullaby to przetestować.

Prawidłowym sposobem na to jest prawdopodobnie użycie poleceń git bash do edycji ustawienia, ale bezpośrednia edycja pliku nie wydawała się być problemem.

Sean
źródło
To dobra uwaga, jeśli podasz nazwę użytkownika, będzie obsługiwany przez pęku kluczy systemu operacyjnego (przynajmniej powinno to być w OSX i najwyraźniej również w systemie Windows). Nie ma różnicy między edycją pliku za pomocą notatnika lub vim / emacs / nano / vi, nie martwiłbym się tak bardzo snobizmem technicznym, to i tak zwykły plik tekstowy.
Kit Sunde
20

Oto oficjalna odpowiedź na to:

Jeśli Git wyświetla monit o podanie nazwy użytkownika i hasła przy każdej próbie interakcji z GitHub, prawdopodobnie używasz sklonowanego adresu URL HTTPS dla swojego repozytorium.

Korzystanie ze zdalnego adresu URL HTTPS ma pewne zalety: jest łatwiejsze do skonfigurowania niż SSH i zwykle działa poprzez ścisłe zapory ogniowe i serwery proxy. Jednak monituje również o podanie poświadczeń GitHub za każdym razem, gdy pobierasz lub wypychasz repozytorium.

Możesz skonfigurować Git, aby przechowywał dla ciebie hasło. Jeśli chcesz to skonfigurować, przeczytaj wszystko o konfigurowaniu buforowania haseł .

Catalin Hritcu
źródło
1
Dzięki. Kłóciłbym się z Githubem, że konfiguracja nie jest łatwiejsza, jeśli tu
trafisz
To jest odpowiedź na pytanie, ponieważ pytanie zadaje, DLACZEGO ?
eli
14

Poprawa na @ Ianl za odpowiedź ,

Wydaje się, że jeśli włączone jest uwierzytelnianie dwuetapowe, musisz użyć tokena zamiast hasła. Możesz wygenerować token tutaj .

Jeśli chcesz wyłączyć monity dotyczące nazwy użytkownika i hasła, możesz ustawić adres URL w następujący sposób -

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

Pamiętaj, że adres URL zawiera zarówno nazwę użytkownika, jak i hasło. .git/configPlik powinien również zawierać bieżące ustawienia.


Aktualizacja 20200128:

Jeśli nie chcesz przechowywać hasła w pliku konfiguracyjnym, możesz wygenerować swój osobisty token i zastąpić hasło tokenem. Oto kilka szczegółów .

Wyglądałoby to tak -

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git
kaushal
źródło
Czy to jest bezpieczne? Czy ktoś może po prostu uzyskać dostęp do tych informacji z mojego komputera?
Akaisteph7
Tak, mogą uzyskać dostęp z twojego komputera, ponieważ są przechowywane w postaci zwykłego tekstu w .git/configpliku
kaushal
11

dodatkowa uwaga:

jeśli już dodałeś zdalny ($ git zdalne dodawanie źródła ...) i musisz zmienić tego konkretnego pilota, najpierw wykonaj zdalne usunięcie ($ git zdalne źródło pochodzenia), zanim ponownie dodasz nowy i ulepszony URL repozytorium (gdzie „origin” to nazwa zdalnego repozytorium).

więc skorzystaj z oryginalnego przykładu:

$ 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
źródło
4
Nie musisz usuwać pilota. Możesz po prostu zmienić adres URL:git remote set-url origin https://[email protected]/WEMP/project-slideshow.git
shovavnik
8

Jeśli używasz HTTPS, sprawdź, czy adres URL jest poprawny. Na przykład:

$ 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.
płatny kujon
źródło
1
To świetna uwaga! Jeśli masz literówkę w adresie URL, pojawi się monit o podanie nazwy użytkownika zamiast informowania, że ​​repozytorium nie istnieje.
dmitrii
5

Właśnie dostałem wiadomość e-mail od administratora github.com z następującymi informacjami: „Zwykle zalecamy użytkownikom korzystanie z adresu URL HTTPS, chyba że mają konkretny powód do korzystania z protokołu SSH. HTTPS jest bezpieczny i łatwiejszy w konfiguracji, więc domyślnie przyjmujemy to przy tworzeniu nowego repozytorium. ”

Pytanie o hasło rzeczywiście akceptuje normalne dane logowania do github.com. Samouczek konfiguracji buforowania haseł można znaleźć na stronie stronie https://help.github.com/articles/set-up-git#password-caching . Postępowałem zgodnie z instrukcjami w samouczku i zadziałało to dla mnie.

jochen
źródło
1
Adres URL został zaktualizowany: help.github.com/articles/caching-your-github-password-in-git
MarkHu
4

Ponieważ używasz sposobu HTTPS . HTTPS wymaga wpisywania dostępu do konta za każdym razem, gdy próbujesz pchać lub ciągnąć , ale jest też jeden sposób, zwany SSH , i pozwala powiedzieć git, że daję ci zgodę na moje konto dla tego komputera i nigdy nie pytaj jeszcze raz o dostępie użytkownika . Aby go użyć, musisz wygenerować klucz SSH i dodać go do swojego konta Github tylko raz. Aby to zrobić, możesz wykonać następujące kroki

Jak wygenerować klucz SSH dla Github

Hazarapet Tunanyan
źródło