Konfiguracja zdalnych repozytoriów Git z użyciem kluczy SSH
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:
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ć:
host alias_polaczenia
HostName serwer
User piotr.nowak
IdentityFile ~/.ssh/wygenerowany_klucz
Port 22
W lokalnym repozytorium zmieniamy adres do zdalnego repozytorium:
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?).
Kategoria:Użyteczne
Oznaczone jako: git, konfiguracja, ssh
Przekaż dalej: