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 git@github.com
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.

Odpowiedzi:


662

Nie używaj HTTP zamiast SSH

zmiana

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

do

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

możesz to zrobić w .git/configpliku


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 git@github.com: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.


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ł .


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:password@github.com/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:token@github.com/WEMP/project-slideshow.git

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://github-username@github.com/WEMP/project-slideshow.git

4
Nie musisz usuwać pilota. Możesz po prostu zmienić adres URL:git remote set-url origin https://github-username@github.com/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.

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.



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


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.