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.