Konfiguracja zdalnych repozytoriów Git z użyciem kluczy SSH

GIT

Dziś krótko i węzłowato: jak skonfigurować połączenie ze zdalnym repozytorium Git tak, by wykorzystywać klucz SSH logując się jako użytkownik o innym loginie niż lokalny systemowy?

Załóżmy, że lokalnie nasz login to jan.kowalski, a dostęp do zdalnego repozytorium wymaga logowania jako piotr.nowak – wszystko pięknie, znamy host, login i hasło, tylko że ciężko nam zapamiętać ciąg znaków typu UnXTlIx5dLCGlzYF9qRp (co jest zupełnie zrozumiałe) i zupełnie nie uśmiecha nam się wizja robienia kopiuj/wklej przy każdym połączeniu. Robimy więc wszystko co potrzeba by wygenerować i wrzucić na serwer klucz SSH. W zależności od tego czy chcemy klucz zabezpieczyć, czy też nie, stosujemy passphrase (wtedy może to być nasze, łatwiejsze do zapamiętania hasło) lub go nie używamy.

Ok, mamy klucz ssh, do dzieła! Klonujemy zdalne repo na nasz komputer:

git clone -o nazwa_zdalnego_repo -- piotr.nowak@serwer:/sciezka/do/repo

I niespodzianka… Wcale się nie łączy – pyta nas o hasło (Password:), zamiast o passphrase (Enter passphrase for key '~/.ssh/wygenerowany_klucz':). Zaraz zaraz, myślimy, przecież mam klucz SSH!

Problem polega na tym, że klucz leży w katalogu domowym użytkownika jan.kowalski, a logujemy się jako piotr.nowak… Jak więc skonfigurować takie połączenie? Z pomocą po raz kolejny przychodzi plik ~/.ssh/config, do którego należy dopisać:

# Komentarz dotyczący połączenia
host alias_polaczenia
    HostName serwer
    User piotr.nowak
    IdentityFile ~/.ssh/wygenerowany_klucz
    Port 22

W lokalnym repozytorium zmieniamy adres do zdalnego repozytorium:

git remote set-url  nazwa_zdalnego_repo alias_polaczenia:/sciezka/do/repo

Dzięki temu alias_polaczenia wyszukiwany jest w ~/.ssh/config użytkownika jan.kowalski, gdzie znajduje się informacja o tym jakiego loginu i klucza użyć. Udanych połączeń!

ps. Git udostępnia mechanizmy uwierzytelniania, ale osobiście wydaje mi się, że korzystanie z kluczy SSH jest bardziej eleganckie i bezpieczne (trzymanie haseł w repozytorium? Jako czysty tekst? Poważnie?).

Skomentuj "Konfiguracja zdalnych repozytoriów Git z użyciem kluczy SSH":

Musisz się zalogować, aby móc dodać komentarz.