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 🙂