Logowanie do GitHub z wykorzystaniem kluczy z poziomu wiersza poleceń

Wpis “dla siebie”. Albo inaczej mówiąc “Rzadko to konfiguruję, ale jak już to robię, to nigdy nie pamiętam od czego zacząć – więc zaczynam od Google”.

Scenariusz – mam na kilku hostingach strony, których kod (zazwyczaj motyw WordPress) leży sobie w repozytorium git. Chcę wprowadzać zmiany wygodnie i szybko. Czasem korzystam więc z edytora na github (wiecie o github.dev, prawda?) a potem na serwerze wykonuję git pull origin. A czasem odwrotnie – poprawiam coś na serwerze i chcę wykonać git push origin.

Jak sprawić, aby nie pytano mnie wtedy o hasło?

Sprawdzić dokumentację na GitHub, czy nadal to co opisano niżej jest aktualne…

https://docs.github.com/en/authentication/connecting-to-github-with-ssh https://docs.github.com/en/get-started/getting-started-with-git/managing-remote-repositories#switching-remote-urls-from-https-to-ssh

…a następnie wejść w wierszu poleceń do katalogu z naszym repo i sprawdzić jaka jest obecnie konfiguracja łączenia się do Github. Jeśli mamy tam https (jak na zrzucie ekranu niżej – punkt 1) zmienić ją na SSH i sprawdzić czy wygląda poprawnie (2).

git remote -v 
git remote -v git remote set-url origin [email protected]:USERNAME/REPOSITORY.git
git remote -v

W kolejnym kroku generujemy sobie klucz dostępowy (dedykowany do tego jednego repo, albo do wielu) za pomocą komendy:

ssh-keygen -t ed25519 -C "mail-githubowy" 

Przy pytaniu o nazwę klucza podajemy dowolną nazwę. W dalszej części założę, że podano nazwę nazwaklucza.

Zapytani zostaniemy też o hasło, ale możemy udawać, że nie wiemy o co chodzi i zbyć to pytanie enterem. Stworzona zostanie para kluczy niezabezpieczonych hasłem. Ewentualny wyciek klucza prywatnego będzie wtedy skutkował możliwością dostania się do naszego repo – a być może (zależnie od konfiguracji niżej) – jego nadpisania.

Klucze gotowe, kopiujemy je więc oba do ~/.ssh/, przechodzimy tam, zmieniamy nazwę pliku z kluczem prywatnym i ustawiamy na nim uprawnienia

mv nazwaklucza* ~/.ssh/ 
cd ~/.ssh
mv nazwaklucza nazwaklucza.pem 
chmod 600 nazwaklucza.pem 

Tworzymy lub edytujemy plik config w .ssh i dodajemy w nim:

Hostname github.com 
IdentityFile ~/.ssh/nazwaklucza.pem 

Następnie kopiujemy zawartość pliku nazwaklucza.pub do nowego klucza dodawanego w deployment keys w naszym repozytorium (np., https://github.com/nazwa-konta/nazwa-naszego-repo/settings/keys). Domyślnie klucz taki pozwala tylko na odczyt repo, ale możemy (znając ryzyko) zaznaczyć też prawa zapisu. Wtedy przejęcie klucza prywatnego może nas bardziej zaboleć.

Następnie – cieszymy się “bezhasłowym” dostępem do naszego repo na GitHub.

Spotkamy się ponownie?

otrzymasz jeden mail miesięcznie z najnowszymi wpisami

klikając "Zapisz mnie" potwierdzasz zapoznanie się z polityką prywatności tego bloga

Spotkamy się ponownie?

otrzymasz jeden mail miesięcznie z najnowszymi wpisami

klikając "Zapisz mnie" potwierdzasz zapoznanie się z polityką prywatności tego bloga

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *