W nowoczesnych systemach często odchodzi się od klasycznego logowania za pomocą loginu i hasła na rzecz uwierzytelnienia za pomocą kluczy SSH. Jak każde narzędzie to także ma swoje wady i zalety, jednak tutaj chciałbym się skupić na procesie, w jaki sposób skonfigurować, a później korzystać z powyższego rozwiązania w systemie Mac OS X.
Gdzie można korzystać z kluczy SSH?
Lista jest bardzo długa, natomiast warto wspomnieć o takich platformach i usługach jak chociażby:
- github.com
- hosting www
- połączenie SSH
- autoryzacja za pomocą LDAP
Tworzenie pary kluczy
Na początku należy utworzyć parę kluczy 🗝 (publiczny oraz prywatny) które będą służyć do uwierzytelnienia. Czym są poszczególne klucze? Jak sama nazwa wskazuje, klucz publiczny to taki, który można udostępnić. Jest on dodawany np. na serwerze w celu weryfikacji klucza prywatnego. Klucz prywatny jest tą częścią, która powinna być chroniona i nie może zostać upubliczniona nikomu. Jeśli ktoś wejdzie w posiadanie tego klucza, jest to jednoznaczne z kradzieżą cudzej tożsamości – można uzyskać niepowołany dostęp do systemu.
Można to przyrównać do klucza i zamka w klasycznych drzwiach (choć takie porównanie ma wiele niespójności, jednak pozwoli sobie wyobrazić w praktyce działanie mechanizmu) – klucz reprezentuje klucz prywatny, natomiast zamek jest kluczem publicznym.
Aby utworzyć taką parę kluczy, wykonaj w terminalu:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa.custom_name -C "username"
W przykładzie powyżej, jako custom_name
możesz podać nazwę serwera lub datę utworzenia kluczy, co pomoże Ci zidentyfikować w przyszłości konkretny klucz spomiędzy całej listy. Jako username
podaj własny login do serwisu lub mail. W powyższym przykładzie wybrano szyfrowanie RSA o długości 4096 bitów. Rodzajów kluczy jest sporo, jednak powyższy wydaje się być dobrym kompromisem.
Po zatwierdzeniu Enterem, system poprosi o utworzenie hasła dla generowanych kluczy, a następnie o jego potwierdzenie.
💡 Pamiętaj, że wpisując hasło, nie pokażą się żadne znaki na ekranie – taka forma zabezpieczenia.
Dodanie klucza prywatnego w systemie
Aby klucze mogły być używane w systemie, wprowadź poniższe polecenie, gdzie jako [your-private-key] podaj nazwę nowo-wygenerowanego klucza prywatnego.
ssh-add -K ~/.ssh/[your-private-key]
Następnie należy skonfigurować wykorzystanie tego klucza dla poszczególnych domen w pliku ~/.ssh/config
. Plik ten powinien wyglądać jak we wzorze poniżej:
Host domena-dla-nowego-klucza
HostName podaj-domene.pl
User podaj-nazwe-uzytkownika
IdentityFile ~/.ssh/id_rsa.custom
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa.custom
Po zapisaniu powyższego pliku konfiguracyjnego, klucz prywatny jest gotowy do wykorzystania.
Klucz publiczny – co z nim zrobić?
Klucz publiczny należy umieścić na serwerze lub w miejscu docelowym, z którym będzie następowało logowanie. W przypadku serwisów online tj. github, ustawienia certyfikatów i kluczy realizuje się z poziomu panelu ustawień użytkownika. Natomiast, aby dodać klucz na serwerze zdalnym, można użyć np. klienta Cyberduck lub konsoli.
💻 W przypadku konsoli możesz skorzystać z polecenia scp
, jak w przykładzie poniżej:
scp -P [ustalony wcześniej numer portu ssh] ~/.ssh/id_rsa.pub [login]@[adres ip lub serwer]:~/.ssh/id_rsa.pub
Przykładowe polecenie może wyglądać następująco:
scp -P 59490 ~/.ssh/id_rsa.pub user@192.168.0.100:~/.ssh/id_rsa.pub
Po przesłaniu klucza publicznego na serwer docelowy, należy dodać ten klucz do listy zautoryzowanych kluczy, wykonując polecenie na tym serwerze (jeśli nazwa przesłanego klucza była inna, odpowiednio ją zmodyfikuj):
cd ~/.ssh/
cat id_rsa.pub >> authorized_keys
Podsumowanie
Po wykonaniu powyższych kroków, możesz już korzystać z nowych kluczy w celu autoryzacji. Korzystając np. z klienta Cyberduck, przy tworzeniu nowego połączenia, należy wypełnić pole wskazujące na klucz jaki ma zostać użyty.
Przy pierwszym połączeniu podaj hasło do klucza (to podane przy jego tworzeniu), następnie zostanie ono zapamiętane i nie będzie wymagane przy kolejnych połączeniach.