Ustawienie domyślnych kluczy SSH dla wielu kont na gitlabie i githubie

Jeśli posiadasz kilka kont na GitLabie lub GitHubie (np. konto prywantne i konto firmowe) i każde z nich korzysta z różnych kluczy SSH (co jest dobrą praktyką), możesz dla każdego konta zdefiniować osobny zestaw parametrów uwierzytelniania, tak aby środowisko pracy automatycznie rozpoznawało, którego klucza SSH użyć w danym kontekście. W praktyce oznacza to, że operacje wykonywane na różnych repozytoriach – niezależnie od tego, czy należą do GitLaba, GitHuba czy innej platformy – będą korzystać z właściwych tożsamości bez konieczności ręcznego przełączania się pomiędzy kluczami. Tego rodzaju konfiguracja zapewnia stabilność procesu pracy, eliminuje konflikty związane z nieprawidłowym doborem kluczy i umożliwia płynne zarządzanie wieloma profilami deweloperskimi w jednym środowisku.

Konfiguracja domyślnych kluczy SSH

Aby ustawić domyślne klucze wykonaj następujące kroki:

1. Utwórz plik config (jeśli jeszcze nie istnieje) w folderze .ssh, który znajdziesz zazwyczaj w (ukrytym) podfolderze .ssh pod ścieżką:

Linux/Mac: %HOMEDRIVE%%HOMEPATH%/.ssh/  (np. u mnie jest to home/myusername/.ssh )

Windows: %USERPROFILE%/.ssh/  (np. u mnie jest to c:\users\myusername\.ssh )

Miej na uwadze, że ścieżka ta zależy od konfiguracji systemu.

2. W pliku config ustal nazwy i wskaż lokalizację poszczególnych kluczy

Host work.gitlab.com
   HostName gitlab.com
   PreferredAuthentications publickey
   IdentitiesOnly yes
   IdentityFile /path/to/.ssh/id_gitlab_work
Host private.gitlab.com
   HostName gitlab.com
   PreferredAuthentications publickey
   IdentitiesOnly yes
   IdentityFile /path/to/.ssh/id_gitlab_private

Host – to dowolna nazwa, możesz tu wpisać cokolwiek

HostName– to jedna z nazw hosta dla gitlaba, inne znajdziesz tutaj: https://docs.gitlab.com/ee/user/gitlab_com/#hostname-list

PreferredAuthentications – to wskazanie, że gitlab będzie korzystał z klucza publicznego, który musisz wkleić na swoim koncie na gitlabie tutaj: https://gitlab.com/-/user_settings/ssh_keys

IdentitiesOnly – wskazuje, że połączenie powinno używać tylko przypisanego w IdentityFile pliku jako metody uwierzytelniania.

IdentityFile – wskazuje ścieżkę do klucza SSH

Klonowanie repozytorium ze wskazaniem odpowiedniego klucza SSH

Aby sklonować repozytorium z gitlaba, musisz wskazać odpowiedni klucz SSH, aby jednoznacznie określić, która tożsamość powinna być wykorzystana do autoryzacji z repozytorium zdalnym.

git clone [email protected]:namespace/my-project-3.git --config core.sshCommand="ssh -i /path/to/.ssh/id_work"

Co zrobić w przypadku, kiedy masz już projekt postawiony lokalnie i potrzebujesz tylko dodać do niego ścieżkę do repozytorium zdalnego? Wtedy możesz uzyć takiej komendy:

git remote set-url origin [email protected]:namespace/my-project-3.git

Zauważ, że standardowy adres projektu to [email protected]:namespace/my-project-3.git, a w powyższym przykładzie zamieniliśmy nazwę hosta gitlab.com na work.gitlab.com

Analogicznie działają ustawienia w przypadku serwisu GitHub.

Teraz możesz robić commity przy wykorzystaniu różnych kluczy SSH dla różnych projektów 🙂