Często przychodzi nam pracować z różnymi dostawcami hostingu na repozytoria GIT, takimi jak Github, Gitlab czy Bitbucket. Wszystko jest w porządku kiedy do wszystkich tych serwisów możemy dodać ten sam klucz SSH, jednak czasem bywa, że muszą to być inne klucze ssh, ponieważ potrzebne jest utworzenie dwóch różnych kont na jednym serwisie. Na przykład firmowe i prywatne (wiem, że to dziwne, ale takie sytuacje się zdarzają).
Tworzenie kluczy
Wpisz w konsoli polecenie
$ ssh-keygen -t rsa -C "your_name@home_email.com"
Kiedy zobaczysz poniższy komunikat
Generating public/private rsa key pair. Enter file in which to save the key (/home/user_name/.ssh/id_rsa):
Podaj nazwę dla pary kluczy inną niż proponowana domyślna, np. id_rsa_home
.
Następnie wykonaj tej sam krok dla innego adresu e-mail (np. $ ssh-keygen -t rsa -C "your_name@company_email.com"
) i podaj odpowiednią nazwę plików (np. id_rsa_company
).
Po wyświetleniu zawartości katalogu ssh ($ ls ~/.ssh
) powinieneś zobaczyć listę plików:
id_rsa_home id_rsa_company id_rsa_home.pub id_rsa_company.pub
Dodawanie pliku konfiguracyjnego
Aby zarządzać wieloma kluczami ssh należy utworzyć plik konfiguracyjny w którym łatwo zdefiniować jaki klucz powinien być używany w danym momencie. Załóżmy, że posiadamy prywatne konto na githubie, a dodatkowo firmowe zarówno na githubie jak i wewnętrznym gitlabie.
Wykonaj polecenia
$ cd ~/.ssh/ $ touch config $ nano config
I wypełnij nowy plik config
:
# GITLAB Host gitlab.company_url.com HostName gitlab.company_url.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_company # Home account Host home.github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_home # Company account Host company.github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_company
Dodanie kluczy do rejestru
Najpierw musimy wyczyścić cache używając polecenia $ ssh-add -D
, ale jeśli zobaczysz komunikat: Could not open a connection to your authentication agent.
, użyj polecenia
eval `ssh-agent -s`
i powtórz poprzednie polecenie.
Sprawdź dodane klucze:
$ ssh-add -l 2048 d4:e0:39:e1:bf:6f:e3:26:14:6b:26:73:4e:b4:53:83 /home/mateusz/.ssh/id_rsa_home (RSA) 2048 7a:32:06:3f:3d:6c:f4:a1:d4:65:13:64:a4:ed:1d:63 /home/mateusz/.ssh/id_rsa_company (RSA)
Jeśli nie zobaczyłeś żadnych wpisów trzeba jeszcze dodać klucze do rejestru.
$ ssh-add ~/.ssh/id_rsa_company $ ssh-add ~/.ssh/id_rsa_home
Potwierdzenie połączenia
Kiedy połączysz wygenerowane klucze do swoich kont w serwisach hostingowych według instrukcji każdego z nich możesz śmiało sprawdzić swoje połączenie ssh.
$ ssh -T [email protected]_url.com Welcome to GitLab, CompanyUser! $ ssh -T [email protected] Hi home_user! You\'ve successfully authenticated, but GitHub does not provide shell access. $ ssh -T [email protected] Hi company_user! You\'ve successfully authenticated, but GitHub does not provide shell access.
Wybór maila w projekcie
Nie zapomnij aby do każdego projektu ustawić odpowiedni e-mail, który ma być spięty z Twoim kluczem ssh.
$ cd ~/home_project $ git config user.email "your_name@home_email.com"