Git push wymaga nazwy użytkownika i hasła

Sklonowałem repozytorium Gita z mojego konta Github na mój komputer.

Chcę pracować zarówno z moim komputerem, jak i laptopem, ale z jednym kontem Github.

Kiedy próbuję wcisnąć lub wyciągnąć z Github za pomocą mojego komputera, wymaga to nazwy użytkownika i hasła, ale nie podczas korzystania z laptopa!

Nie chcę wpisywać nazwy użytkownika i hasła za każdym razem, gdy wchodzę w interakcję z origin. Co mi umyka?

Author: Eric Leschinski, 2011-07-04

19 answers

Częstym błędem jest klonowanie przy użyciu domyślnego (HTTPS) zamiast SSH. Możesz to poprawić, przechodząc do repozytorium, klikając "Klonuj lub Pobierz", a następnie klikając przycisk "Użyj SSH" nad polem adresu URL i aktualizując adres URL swojego pilota origin w następujący sposób: {]}

git remote set-url origin [email protected]:username/repo.git
Jest to udokumentowane na GitHub: przełączanie zdalnych adresów URL z HTTPS na SSH.
 1612
Author: Tekkub,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-12 22:14:48

Stałe uwierzytelnianie z repozytoriami Git,

Uruchom następujące polecenie, aby włączyć buforowanie poświadczeń:

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

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

Użycie powinno również określać buforowanie expire ,

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

Po włączeniu buforowania poświadczeń będzie on buforowany przez 7200 sekund (2 godziny).

 188
Author: Jay Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-22 08:23:26

Właśnie natknąłem się na ten sam problem i najprostszym rozwiązaniem, które znalazłem, było użycie adresu SSH zamiast HTTPS one:

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

I nie to:

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

Możesz teraz zweryfikować za pomocą po prostu SSH Key zamiast username i password.

 112
Author: Anton Salikhmetov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-19 06:23:49

Oprócz zmiany na SSH możesz również nadal używać HTTPS, jeśli nie masz nic przeciwko umieszczeniu hasła w czystym tekście. Umieść to w ~/.netrc, a nie zapyta o Twoją nazwę użytkownika/hasło (przynajmniej na Linuksie i Macu):

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

Dodatek (Zobacz drugi komentarz VonC): w systemie Windows nazwa pliku to %HOME%\_netrc.

Przeczytaj również pierwszy komentarz VonC w przypadku, gdy chcesz zaszyfrować.

Kolejny dodatek (Zobacz komentarz user137717), którego możesz użyć Jeśli posiadasz git 1.7.10 lub nowszy .

Buforuj swoje hasło github w git za pomocą helpera poświadczeń :

Jeśli klonujesz repozytoria GitHub używając HTTPS, możesz użyć credential helper mówi Gitowi, aby zapamiętał Twoją nazwę Użytkownika na Githubie i hasło za każdym razem, gdy rozmawia z GitHub.

To działa również na Linuksie, Mac i Windows.
 108
Author: rintcius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-16 11:49:06

Dla niewtajemniczonych, którzy są zdezorientowani poprzednimi odpowiedziami, możesz zrobić:

git remote -v

Który odpowie coś w stylu

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

Następnie możesz uruchomić polecenie wiele innych sugerowanych, ale teraz znasz swoją nazwę i yourrepo z góry, więc możesz po prostu wyciąć i wkleić yourname/yourrepo.git z góry do

git remote set-url origin [email protected]:yourname/yourrepo.git
 72
Author: Davide,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-13 17:22:07

Jeśli używasz ssh i twój klucz prywatny jest zaszyfrowany hasłem, to nadal będziesz musiał wprowadzić hasło / hasło dla klucza prywatnego podczas wykonywania operacji sieciowych z Git Jak push, pull, i fetch.

Użyj ssh-agent, aby zapisać hasło klucza prywatnego/poświadczenia hasła

Jeśli chcesz uniknąć konieczności wpisywania hasła za każdym razem, możesz użyć ssh-agent, aby zapisać swoje poświadczenia hasła klucza prywatnego raz na w związku z tym, że nie jest możliwe nawiązanie połączenia z twoim agentem uwierzytelniającym, nie jest możliwe nawiązanie połączenia z twoim agentem uwierzytelniającym.]}

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

W Windows Msysgit Bash, trzeba ocenić wyjście ssh-agent, ale nie jestem pewien, czy trzeba zrobić to samo w innych środowiskach programistycznych i systemach operacyjnych.

ssh-add poszukuje klucza prywatnego w folderze home .ssh o nazwie id_rsa, która jest domyślną nazwą, ale można przekazać ścieżkę pliku do klucza o innym nazwisko.

Zabicie agenta

Kiedy skończysz sesję terminala, możesz zamknąć {[10] } z flagą kill -k:
$ ssh-agent -k

Jak wyjaśniono w ssh-agent Instrukcja :

-k

Zabić bieżącego agenta (podanego przez zmienną środowiskową ssh_agent_pid).

Opcjonalny limit czasu

Może również przyjmować opcjonalny parametr timeout w następujący sposób:]}
$ ssh-add -t <timeout>

Gdzie <timeout> jest formatu <n>h dla <n> godziny, <n>m przez <n> minuty i tak dalej.

Zgodnie z ssh-agent Instrukcja :

-t life

Ustawia domyślną wartość dla maksymalnego okresu ważności dodanych tożsamości do agenta. Żywotność może być określona w sekundach lub w format czasu określony w sshd_config (5) . Okres użytkowania określony dla tożsamości z ssh-add (1) nadpisuje tę wartość. Bez ta opcja domyślna maksymalna żywotność wynosi na zawsze.

Zobacz tę stronę Więcej formatów czasu .

Ostrzeżenie Bezpieczeństwa dla użytkowników Cygwin

Użytkownicy Cygwin powinni być świadomi potencjalnego zagrożenia bezpieczeństwa z użyciem SSH-agenta w Cygwin :

Ludzie powinni być świadomi potencjalne niebezpieczeństwa SSH-agenta pod cygwinem [1], choć pod lokalnym netstat i remote portscan nie wygląda na to, że port określony w /tmp / SSH-foo jest dostępne dla każdego ...?

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

I przy podanym linku :

Zauważ jednak, że gniazda domeny uniksowej Cygwina są zasadniczo Niepewne {[32] } i dlatego zdecydowanie zniechęcam do używania SSH-agenta pod cygwin.

Po uruchomieniu SSH-agenta pod cygwin tworzy ono Gniazdo AF_UNIX w /tmp/ssh-$USERNAME/ katalog. pod cygwin gniazda AF_UNIX są emulowane przez gniazda AF_INET. możesz to łatwo zobaczyć, jeśli spojrzysz do /tmp/ssh-$USERNAME/agent-socket-* plik poprzez notatnik. zobaczysz. coś jak

!<socket >2080

Potem biegnij netstat -a i zaskocz! masz jakiś program do słuchania port 2080. to agent ssh. kiedy ssh otrzymuje wyzwanie RSA od serwer, odnosi się do odpowiedniego /tmp/ssh-$USERNAME/agent-socket-* (pod cygwinem, w naszym przypadku oznacza to, że otworzy połączenie z localhost:2080) i prosi SSH-agenta o przetworzenie wyzwania RSA z posiada klucz prywatny, a następnie po prostu przekazuje odpowiedź otrzymaną od ssh-agent do serwer.

Pod Uniksem taki scenariusz działa bez problemów, ponieważ jądro Uniksa sprawdza uprawnienia, gdy program próbuje uzyskać dostęp do gniazda AF_UNIX. Na Gniazda AF_INET, jednak połączenia są anonimowe (Czytaj "niepewne"). Wyobraź sobie, że masz cygwin ssh-agent działa. złośliwy haker może przeskanować twoje pudełko, zlokalizować otwarty port używany przez ssh-agent, otwórz połączenie z serwerem ssh, odbierz wyzwanie RSA z niego, wyślij go do swojego agenta ssh przez otwarty port, który znalazł, odbieraj RSA odpowiedź, wyślij go na serwer ssh i voila, pomyślnie zalogował się do serwera jak ty.

 49
Author: Community,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:29

Source: Set Up Git

Poniższe polecenie zapisze Twoje hasło w pamięci na jakiś czas.
(Dla git 1.7.10 lub nowszego.)

$ 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 1 hour (setting is in seconds)
 43
Author: Sagar Rakshe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-20 01:50:04

Kiedy używasz https dla git pull & push, po prostu skonfiguruj remote.origin.url dla swojego projektu, aby uniknąć wprowadzania nazwy użytkownika (lub/i hasła) za każdym razem, gdy naciskasz.

Jak skonfigurować remote.origin.url:

Url format:
    https://{username:password@}github.com/{owner}/{repo}

Parameters in url:
* username
    optional, the username to use when need authentication,
    if specified, no need to enter username again when need authentication,
    don't use email, use your username that has no "@", otherwise the url can't be parsed correctly,
* password
    optional, the password to use when need authentication,
    if specified, no need to enter password again when need authentication,
    tip:
        this value is stored as plain text, so for security concern, don't specify this param,
* 

e.g
    git config remote.origin.url https://[email protected]/eric/myproject


@ Update-using ssh

Myślę, że użycie protokołu ssh jest lepszym rozwiązaniem niż https, mimo że etap konfiguracji jest nieco bardziej złożony.

Szorstkie kroki:

  • tworzenie kluczy ssh za pomocą polecenia, np {[7] } w Linuksie, na windows msysgit udostępnia podobne polecenia.
  • przechowuj klucz prywatny na lokalnej maszynie w odpowiedniej lokalizacji, np. I dodać go do agenta ssh za pomocą polecenia ssh-add.
  • wgraj klucz publiczny do serwera git.
  • Zmiana remote.origin.url z repozytorium git na styl ssh, np.]}
  • następnie, gdy pull lub push, nie ma potrzeby, aby wprowadzić nazwę użytkownika lub hasło kiedykolwiek.

Porady:

  • Jeśli twój klucz ssh ma hasło, musisz wprowadzić je przy pierwszym użyciu domyślnie klawisz po każdym ponownym uruchomieniu komputera.

@Update-przełączanie pomiędzy protokołem https i ssh.

Wystarczy zmienić remote.origin.url , lub możesz edytować repo_home/.git/config bezpośrednio, aby zmienić wartość (np. używając vi w Linuksie).

Zazwyczaj dodaję wiersz dla każdego protokołu i komentuję jeden z nich używając #.

E. g

[remote "origin"]
        url = [email protected]:myaccount/myrepo.git
        # url = https://[email protected]/myaccount/myrepo.git
        fetch = +refs/heads/*:refs/remotes/origin/*
 28
Author: Eric Wang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-17 03:40:40

Możesz buforować swoje hasło GitHub w Git:

Po prostu postępuj zgodnie z instrukcjami z oficjalnej dokumentacji Githuba .

Po wykonaniu instrukcji z powyższego linku, powinieneś być w stanie wcisnąć/pociągnąć do/z repo bez wpisywania nazwy użytkownika/hasła za każdym razem.

 15
Author: K M Rakibul Islam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-22 14:41:00

Zadziałało dla mnie edytowanie .git/config i używanie

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

Jest oczywiste, że jest to niepewny sposób przechowywania hasła, ale są środowiska/przypadki, w których może to nie być problem.

 5
Author: WoJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-31 18:25:58

Aktualizacja dla HTTPS:

Github uruchomił nowy program dla systemu Windows, który przechowuje Twoje poświadczenia, gdy używasz HTTPS:

Do użycia:

Pobierz program z tutaj

Po uruchomieniu programu edytuje on plik .gitconfig. Sprawdź ponownie, czy edytował poprawną .gitconfig w przypadku, gdy masz kilka z nich. Jeśli nie edytował poprawnego, Dodaj do swojego .gitconfig

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

Zwróć uwagę na podział linii po [credential]. On wymagane.

Otwórz klienta linii poleceń i spróbuj raz git push origin master. Jeśli poprosi Cię o hasło, wprowadź je i koniec. Hasło zapisane!

 4
Author: Varun Achar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-05 06:02:00

Masz dwie opcje.

Jeśli używasz tego samego Użytkownika na obu komputerach, musisz skopiować .pub klucz do komputera, więc github wie, że jesteś tym samym użytkownikiem.

Jeśli utworzyłeś nowy .plik pub dla komputera i chcesz traktować maszyny jako różnych użytkowników, musisz zarejestrować nowy .plik pub na stronie github.

Jeśli to nadal nie działa, może to być spowodowane tym, że ssh nie jest poprawnie skonfigurowany i że ssh nie może znaleźć Lokalizacji kluczy. Try

ssh -vv [email protected]

Aby uzyskać więcej informacji, dlaczego SSH nie działa.

 4
Author: ralphtheninja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-19 00:41:34

Oto inna opcja:

Zamiast pisać

git push origin HEAD
Możesz napisać:
git push https://user:[email protected]/path HEAD

Oczywiście w przypadku większości powłok spowoduje to buforowanie hasła w historii, więc miej to na uwadze.

 3
Author: Lacho Tomov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-24 17:05:50

Miałem ten sam problem.

Więc zmień .plik Git / config z mojego projektu
url = https://github.com/<your-user-here>/<your-repo-here>

Do

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

I dodaj klucz publiczny SSH do profilu git, który jest w ustawieniu.

Dla klucza publicznego ssh

cat ~/.ssh/id_rsa.pub
 2
Author: shrikant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-09 05:42:33

Dla użytkowników Windows git, po uruchomieniu git config --global credential.helper store, jeśli nadal wyświetla monit o hasło, lepiej sprawdź, gdzie jest zapisana konfiguracja. użycie tego polecenia

git config --list --show-origin

W moim przypadku ręcznie Edytuj plik konfiguracyjny 'C:\Program Files\Git \ mingw64 \ etc \ gitconfig', dodając następujący tekst, działa.

[credential] helper = store

 1
Author: Liang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-30 09:11:49

Jak wielu użytkowników powiedziało, wystarczy zmienić adres URL repozytorium git z https na SSH.

Jeśli nie wygenerowałeś klucza SSH na swoim komputerze, to twój będzie musiał to zrobić.

Jako dodatkowa informacja, po tej zmianie nadal otrzymywałem ten sam błąd: Odmowa uprawnień.

W moim przypadku problem polegał na tym, że używałem powłoki Windows do wykonania polecenia ngh; ponieważ to polecenie powinno otworzyć znak zachęty do żądania wyrażenia SSH i Powłoka systemu Windows nie otwiera tego rodzaju monitów, uwierzytelnianie po prostu nie powiodło się.

Więc musiałem otworzyć Git shell i wykonać tam polecenie ngh, umieścić frazę SSH w wierszu polecenia za każdym razem, gdy o to prosi i"voilà"... Po prostu działało dobrze!

 0
Author: Thisisalexis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-03 14:16:35

Jeśli klucz ssh lub .netrc nie działa dla ciebie, więc innym prostym, ale mniej bezpiecznym rozwiązaniem, które może działać dla ciebie, jest git-credential-store - Helper do przechowywania poświadczeń na dysku

git config --global credential.helper store

Domyślnie poświadczenia będą zapisywane w ~/.git-credentials. Zostanie stworzony i napisany do.

Należy pamiętać, że korzystanie z tego helpera będzie przechowywać hasła niezaszyfrowane na dysku, chronione tylko przez uprawnienia systemu plików. Jeśli nie jest to akceptowalna wymiana zabezpieczeń.

 0
Author: rumman0786,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-12 10:12:41

Musisz wykonać 2 kroki -

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

Zwróć uwagę, że adres URL Gita jest adresem ssh, a nie adresem https .. Który możesz wybrać tutaj.

Tutaj wpisz opis obrazka

 0
Author: sapy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-11 20:58:15

Jeśli używasz git (np. Git bash) pod Windows (i jeśli nie chcesz przełączyć się z https na ssh)

Możesz też użyć https://github.com/Microsoft/Git-Credential-Manager-for-Windows

Ta aplikacja zachowa dla ciebie nazwę użytkownika i hasło...

 0
Author: boly38,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-07 10:48:51