Wciśnij do GitHub bez hasła za pomocą ssh-key


215

Wygenerowałem parę kluczy SSH bez hasła i dodałem klucz publiczny do GitHub.

Połączenie z

user@dev:/var/www/project# ssh -T git@github.com
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

zakończyło się sukcesem, a kiedy zmienię nazwę klucza, nie powiedzie się.

Ale kiedy chcę wprowadzić zmiany, nadal pytam o kombinację nazwy użytkownika i hasła.

Czy istnieje sposób na wypchnięcie bez hasła?


9
Upewnij się, że nie używasz https://github...w swoich pilotach. Powinny również przestrzegać tego git@github...formatu.
cjc343

Odpowiedzi:


421

Jeśli prosi o podanie nazwy użytkownika i hasła, pilot źródłowy wskazuje adres URL HTTPS zamiast adresu URL SSH.

Zmień na ssh.

Na przykład projekt GitHub, taki jak Git, będzie miał adres URL HTTPS:

https://github.com/<Username>/<Project>.git

I SSH:

git@github.com:<Username>/<Project>.git

Możesz to zrobić:

git remote set-url origin git@github.com:<Username>/<Project>.git

zmienić adres URL.


4
To rozwiązało problem, ale wciąż zadaję sobie pytanie, dlaczego Github doradziłby ci domyślnie wskazanie zdalnego końca nowego repozytorium na adres URL http. Właśnie utworzyłem repozytorium od zera i przedstawiono mi opcję ustawienia zdalnego adresu URL https, a nie git.
Preslav Rachev

2
Oto szybkie polecenie powłoki jednowierszowej, które automatycznie zmieni adres URL https na odpowiedni git (działa tylko w przypadku adresów URL github!):git remote set-url origin $(git remote show origin | grep "Fetch URL" | sed 's/ *Fetch URL: //' | sed 's/https:\/\/github.com\//git@github.com:/')
Christopher Shroba 18.04.18

11

Dodatkowo w przypadku gists wydaje się, że musisz pominąć nazwę użytkownika

git remote set-url origin git@gist.github.com:<Project code>

10

Jeśli rzeczywiście używasz adresu URL SSH, ale nadal pytasz o nazwę użytkownika i hasło podczas wypychania git:

git remote set-url origin git@github.com:<Username>/<Project>.git

Powinieneś spróbować rozwiązać problem z:

ssh -vT git@github.com

Poniżej znajduje się przykładowy wynik:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_dsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

Właściwie już wcześniej dodałem klucz publiczny do GitHub, a także mam klucz lokalny lokalnie. Jednak mój klucz prywatny ma inną nazwę o nazwie /c/Users/Yuci/.ssh/github_rsa.

Według danych wyjściowych Git próbuje /c/Users/Yuci/.ssh/id_rsa, czego nie mam. Dlatego mógłbym po prostu skopiować github_rsado id_rsatego samego katalogu.

cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa

Teraz, gdy uruchamiam ssh -vT git@github.componownie, mam:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
...
Hi <my username>! You've successfully authenticated, but GitHub does not provide shell access.
...

A teraz mogę przesłać do GitHub bez pytania o nazwę użytkownika i hasło :-)


5

Musisz użyć wersji SSH , a nie HTTPS . Kiedy klonujesz z repozytorium, skopiuj link z wersją SSH , ponieważ SSH jest łatwy w użyciu i rozwiązuje wszystkie problemy z dostępem. Możesz ustawić dostęp dla każdego SSH, który wpiszesz na swoje konto (np. Push, pull, klon itp.)

Oto link, który mówi, dlaczego potrzebujemy SSH i jak go używać: krok po kroku

Git Generuj klucze SSH


0

Jak zwykle utwórz klucz SSH i wklej klucz publiczny do GitHub. Dodaj klucz prywatny do ssh-agent. (Zakładam, że to właśnie zrobiłeś).

Aby sprawdzić, czy wszystko jest poprawne, użyj ssh -T git@github.com

Następnie nie zapomnij zmodyfikować zdalnego punktu w następujący sposób:

git remote set-url origin git@github.com:username/your-repository.git

-4

Za pomocą wiersza polecenia:

Wejdź, ls -al ~/.sshaby sprawdzić, czy istnieją istniejące klucze SSH.

W terminalu pokazuje: Nie istnieje katalog

Następnie wygeneruj nowy klucz SSH

Krok 1.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

krok 2.

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>

krok 3.

Enter passphrase (empty for no passphrase): [Type a password]

Enter same passphrase again: [Type password again]

Przepraszamy, to pytanie nie dotyczy tego, jak utworzyć klucze, ale skonfigurować git, aby używał klucza zamiast uwierzytelniania
Sebus,
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.