Wszystko co musisz wiedzieć o kluczach SSH

Opublikowano
tablica z kluczami

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:

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.

Wskazanie klucza SSH w Cyberduck

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.

Autor: macuser

Na co dzień pracuje jako iOS Developer, a w czasie wolnym uwielbia tworzyć muzykę w swoim domowym studio. Lubi czytać książki na temat psychologii, technik marketingu, oraz być ciągle na bieżąco z nowymi trendami w świecie technologii.