Sklonowałem repozytorium Git z mojego konta GitHub na mój komputer.
Chcę pracować zarówno z komputerem, jak i laptopem, ale z jednym kontem GitHub.
Kiedy próbuję pchać lub pobierać z GitHub za pomocą mojego komputera, wymaga to nazwy użytkownika i hasła, ale nie kiedy używam laptopa!
Nie chcę wpisywać nazwy użytkownika i hasła przy każdej interakcji origin
. Czego tu brakuje?
Odpowiedzi:
Częstą przyczyną jest klonowanie przy użyciu domyślnego (HTTPS) zamiast SSH. Możesz to poprawić, przechodząc do swojego 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 zdalnego źródła w następujący sposób:
Jest to udokumentowane na GitHub: Przełączanie zdalnych adresów URL z HTTPS na SSH .
źródło
git remote set-url origin git://new.url.here
)git remote set-url origin https://name:[email protected]/repo.git
(wyodrębniono z komentarza tutaj)Permission denied (publickey)
używanie tego przewodnika: help.github.com/articles/generating-ssh-keys .Trwałe uwierzytelnianie za pomocą repozytoriów Git
Uruchom następujące polecenie, aby włączyć buforowanie referencji :
Należy również określić wygasanie buforowania ,
Po włączeniu buforowania referencji będzie ono buforowane przez 7200 sekund (2 godziny) .
źródło
git remote set-url origin https://[email protected]/<owner>/<repo>.git
To działa również z 2FAfatal: protocol 'https' is not supported
Właśnie natrafiłem na ten sam problem, a najprostszym rozwiązaniem, jakie znalazłem, było użycie adresu URL SSH zamiast HTTPS:
I nie to:
Możesz teraz sprawdzić poprawność za pomocą tylko klucza SSH zamiast
username
ipassword
.źródło
Oprócz zmiany na SSH możesz nadal korzystać z HTTPS, jeśli nie masz nic przeciwko, aby hasło było zapisane czystym tekstem. Umieść to w swoim,
~/.netrc
a nie poprosi o twoją nazwę użytkownika / hasło (przynajmniej w systemie Linux i Mac):Dodawanie (patrz drugi komentarz VonC): w systemie Windows nazwa pliku to
%HOME%\_netrc
.Przeczytaj także pierwszy komentarz VonC na wypadek, gdybyś chciał zaszyfrować.
Kolejny dodatek (patrz komentarz użytkownika 137717), którego możesz użyć, jeśli masz Git 1.7.10 lub nowszy .
Buforuj swoje hasło GitHub w Git za pomocą pomocnika poświadczeń :
Działa to również w systemach Linux, Mac i Windows.
źródło
%HOME%\_netrc
(zamiast~/.netrc
). Zobacz także stackoverflow.com/a/18362082/6309, aby zaszyfrować ten plik.Dla niewtajemniczonych, którzy są zdezorientowani poprzednimi odpowiedziami, możesz:
Który zareaguje czymś takim
Następnie możesz uruchomić polecenie sugerowane przez wielu innych, ale teraz znasz swoje imię i nazwisko z góry, dzięki czemu możesz po prostu wyciąć i wkleić
yourname/yourrepo.git
z powyższego do:źródło
paraphrase
za każdym razem. Nie założyłem jednegoyourrepo
?git remote -v
i zobacz, co wyjdzieJeśli używasz SSH i klucz prywatny jest zaszyfrowany za pomocą hasła, a następnie będziesz nadal być poproszony o wprowadzić hasło / hasło do klucza prywatnego podczas wykonywania operacji sieciowych z Git jak
push
,pull
ifetch
.Użyj ssh-agent, aby zapisać hasło / hasło do klucza prywatnego
Jeśli chcesz uniknąć konieczności wpisywania hasła za każdym razem, możesz użyć
ssh-agent
do zapisywania poświadczeń hasła prywatnego raz na sesję terminalową, jak wyjaśniam w mojej odpowiedzi na Nie można otworzyć połączenia z agentem uwierzytelniającym :W Windows msysgit Bash musisz ocenić dane wyjściowe
ssh-agent
, ale nie jestem pewien, czy musisz zrobić to samo w innych środowiskach programistycznych i systemach operacyjnych.ssh-add
szuka w prywatnym.ssh
folderze domowym klucza prywatnego o nazwieid_rsa
domyślnej, ale ścieżkę pliku można przekazać do klucza o innej nazwie.Zabicie agenta
Po zakończeniu sesji terminalu możesz zamknąć
ssh-agent
flagę kill-k
:Jak wyjaśniono w
ssh-agent
instrukcji :Opcjonalny limit czasu
Może również zająć opcjonalny parametr limitu czasu, taki jak:
gdzie
<timeout>
jest formatem<n>h
dla<n>
godzin<n>m
na<n>
minuty, i tak dalej.Zgodnie z
ssh-agent
instrukcją :Zobacz tę stronę, aby uzyskać więcej formatów czasu .
Ostrzeżenie bezpieczeństwa dla użytkowników Cygwin
Użytkownicy Cygwin powinni zdawać sobie sprawę z potencjalnego zagrożenia bezpieczeństwa podczas korzystania z ssh-agent w Cygwin :
I pod cytowanym linkiem :
źródło
Źródło: Skonfiguruj Git
Następujące polecenie zapisze twoje hasło na pewien czas (dla Git 1.7.10 lub nowszej).
źródło
Kiedy używasz https do Git pull & push, po prostu skonfiguruj
remote.origin.url
swój projekt, aby uniknąć wprowadzania nazwy użytkownika (i / lub hasła) za każdym razem, gdy naciskasz.Jak skonfigurować
remote.origin.url
:@ Aktualizacja - za pomocą
ssh
Myślę, że użycie
ssh
protokołu jest lepszym rozwiązaniem niżhttps
, chociaż etap konfiguracji jest nieco bardziej złożony.Ostre kroki:
ssh-keygen
systemie Linux, w systemie Windowsmsysgit
podaj podobne polecenia.~/.ssh
. I dodaj go do agenta ssh za pomocąssh-add
komendy.remote.origin.url
repozytorium Git nassh
styl, np.[email protected]:myaccount/myrepo.git
Wskazówki:
@Update - Zmiana
https
issh
protokół.Wystarczy sama zmiana
remote.origin.url
, lub możesz edytowaćrepo_home/.git/config
bezpośrednio, aby zmienić wartość (np. Używającvi
Linuksa).Zwykle dodam wiersz dla każdego protokołu i komentuję jeden z nich za pomocą
#
.Na przykład
źródło
git-fetch(1)
wspomina, że tylko w przypadku adresów URL opartych nagit
/ssh
.https://username:[email protected]/
jest bezpieczne. Zobacz stackoverflow.com/questions/4980912/…Możesz buforować swoje hasło GitHub w Git:
Postępuj zgodnie z instrukcjami z oficjalnej dokumentacji GitHub .
Po wykonaniu instrukcji z powyższego linku powinieneś być w stanie pchać / wyciągać do / z repozytorium bez wpisywania nazwy użytkownika / hasła za każdym razem.
źródło
Oto kolejna opcja:
Zamiast pisać
Możesz napisać:
Oczywiście w przypadku większości powłok spowoduje to buforowanie hasła w historii, więc miej to na uwadze.
źródło
To, co zadziałało, to edycja
.git/config
i użycieJest rzeczą oczywistą, że jest to niebezpieczny sposób przechowywania hasła, ale istnieją środowiska / przypadki, w których może to nie stanowić problemu.
źródło
Jeśli klucz lub
.netrc
plik SSH nie działał dla Ciebie, to innym prostym, ale mniej bezpiecznym rozwiązaniem, które może Ci pomóc, jest git-credential-store - Pomocnik w przechowywaniu poświadczeń na dysku:Domyślnie poświadczenia zostaną zapisane w pliku
~/.git-credentials
. Zostanie utworzony i napisany do.Pamiętaj, że użycie tego pomocnika będzie przechowywać hasła nieszyfrowane na dysku, chronione tylko przez uprawnienia systemu plików. Jeśli może to nie być akceptowalny kompromis w zakresie bezpieczeństwa.
źródło
Miałem ten sam problem.
Więc zmieniłem
.git/config
plik z mojego projektu,do
i dodał klucz publiczny SSH do ustawionego profilu Git.
W przypadku klucza publicznego SSH:
źródło
cat ~/.ssh/id_rsa.pub
kluczem rsa i wklej w ustawieniach portalu internetowego git.Aktualizacja dla HTTPS:
GitHub uruchomił nowy program dla systemu Windows, który przechowuje dane uwierzytelniające podczas korzystania z HTTPS:
Używać:
Pobierz program stąd
Po uruchomieniu program dokona edycji
.gitconfig
pliku. Sprawdź ponownie, czy edytował poprawny,.gitconfig
jeśli masz kilka z nich. Jeśli nie edytował poprawnego, dodaj następujące elementy do swojego.gitconfig
UWAGA podział linii po
[credential]
. Jest wymagane.Otwórz klienta linii poleceń i spróbuj
git push origin master
raz. Jeśli poprosi Cię o hasło, wpisz je i gotowe. Hasło zapisane!źródło
W przypadku użytkowników Windows Git, po uruchomieniu
git config --global credential.helper store
, jeśli nadal monituje o hasło, lepiej sprawdzić, gdzie zapisany jest plik konfiguracyjny, za pomocą tego poleceniaW moim przypadku po ręcznej edycji pliku konfiguracyjnego „C: \ Program Files \ Git \ mingw64 \ etc \ gitconfig” i dodaniu następującego tekstu zadziałało.
źródło
Zasadniczo masz dwie opcje.
Jeśli używasz tego samego użytkownika na obu komputerach, musisz skopiować klucz .pub na komputer, aby GitHub wiedział, że jesteś tym samym użytkownikiem.
Jeśli utworzyłeś nowy plik .pub dla swojego komputera i chcesz traktować maszyny jak 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 twoich kluczy. Próbować
Aby uzyskać więcej informacji o tym, dlaczego SSH nie działa.
źródło
Bezpośrednia aktualizacja pliku konfiguracyjnego Git ( jeśli nie chcesz zapamiętywać fantazyjnych poleceń ):
Otwórz
.git/config
plik w swoim ulubionym edytorze tekstu. Będzie on w folderze, który sklonowałeś lub w repozytorium, w którym wykonałeśgit init
. Przejdź do tego repozytorium..git
jest ukrytym folderem, a naciśnięcie Ctrl+ Hpowinno pokazać ukryty folder (ls -a
w terminalu).Poniżej znajduje się próbka
.git/config
pliku. Skopiuj i wklej te linie i pamiętaj, aby zaktualizować je o informacje Git.Zmień część adresu URL za pomocą następującego formatu SSH:
( Powyższe formaty nie zmieniają się w przypadku różnych zdalnych serwerów Git, takich jak GitHub lub Bitbucket. Tak samo jest, jeśli używasz Git do kontroli wersji ):
Uwaga: sposób połączenia SSH ze zdalnym repozytorium Git wymaga dodania publicznego klucza SSH do zdalnego serwera Git ( takiego jak GitHub lub Bitbucket. Wyszukaj klucze SSH na stronie ustawień ).
Aby dowiedzieć się, jak wygenerować klucze SSH, patrz: Tworzenie kluczy SSH
źródło
Oto, co zadziałało dla mnie:
Przykład:
źródło
Musisz wykonać dwa kroki -
git remote remove origin
git remote add origin [email protected]:NuggetAI/nugget.git
Zauważ, że Git URL to URL SSH, a nie URL HTTPS ... Który możesz wybrać tutaj:
źródło
Jeśli sklonowałeś HTTPS zamiast SSH i napotkałeś problem z pytaniem o nazwę użytkownika i hasło przy pobieraniu, wypychaniu i pobieraniu. Możesz rozwiązać ten problem po prostu dla UBUNTU
Krok 1: przejdź do katalogu głównego
utwórz plik .git-credentials
Dodaj tę zawartość do tego pliku z tobą
usename
password
igithosting URL
Następnie wykonaj polecenie
Teraz będziesz mógł bez problemu wyciągać push i pobrać wszystkie szczegóły z repozytorium.
źródło
Jeśli używasz Git (na przykład Git Bash) w systemie Windows (i nie chcesz przełączać się z HTTPS na SSH), możesz także użyć Git Credential Manager dla Windows
Ta aplikacja zachowa dla Ciebie nazwę użytkownika i hasło ...
źródło
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, będziesz musiał to zrobić.
Jako dodatkową informację, po wprowadzeniu tej zmiany nadal otrzymywałem ten sam błąd:
W moim przypadku problem polegał na tym, że korzystałem z powłoki systemu Windows, aby wykonać polecenie ngh; ponieważ to polecenie powinno otworzyć monit o żądanie wyrażenia SSH, a powłoka systemu Windows nie otwiera tego rodzaju monitów, uwierzytelnianie po prostu nie powiodło się.
Musiałem więc po prostu otworzyć powłokę Git i wykonać tam polecenie ngh, wstawić wyrażenie SSH do monitu za każdym razem, gdy o to poprosił, i „voilà” ... Po prostu działało dobrze!
źródło
źródło