Jak skonfigurować klucz SSH w systemie Linux

SSH to świetna technologia; Możesz go użyć do ukrycia ruchu VPN, zabezpieczenia połączenia ze stronami internetowymi i nie tylko. Jedynym problemem jest to, że za każdym razem, gdy próbujesz zalogować się do zdalnego komputera, musisz wprowadzić swoje hasło, a to może być żmudne. Jeśli jesteś programistą, który chce łączyć się z wieloma maszynami jednocześnie przez SSH za pomocą skryptu Bash lub po prostu kimś, kto używa Secure Shell i ma dość wpisywania haseł, istnieje rozwiązanie: SSH bez hasła. Ten proces obejmuje wygenerowanie bezpiecznego klucza SSH na komputerze głównym i udostępnienie go w celu uzyskania dostępu do komputera. Umożliwi to zalogowanie się każdemu, kto ma klucz, nawet jeśli nie zna hasła. Oto jak to działa.

Co to są klucze SSH?

Klucz SSH to unikalny plik identyfikacyjny używany z programem Secure Shell. Celem tych kluczy jest zapewnienie unikalnej tożsamości użytkownikowi i oznaczenie ich jako „zaufanych” podczas logowania. Same te klucze są czymś więcej niż tylko plikami potwierdzającymi czyjąś tożsamość. W rzeczywistości SSH pozwala użytkownikom logować się za pomocą klucza, a nie hasła. Oznacza to, że zamiast być zmuszanym do wprowadzania hasła za każdym razem, gdy logujesz się przez SSH, używasz klucza SSH.

Klucz SSH jest umieszczony w bezpiecznym miejscu w instalacji systemu Linux, a stamtąd możesz logować się do zdalnego komputera tak często, jak chcesz, bez hasła.

Generowanie bezpiecznych kluczy SSH

Wygenerowanie bezpiecznego klucza SSH wymaga, aby SSH działało. Zrozum, że to niekoniecznie oznacza, że ​​musisz mieć serwer SSH. Tylko tyle, że podstawowe narzędzia i technologie SSH działają na twoim komputerze z systemem Linux. Nie wiesz, jak skonfigurować SSH? Postępuj zgodnie z naszym przewodnikiem tutaj.

Zawsze generuj klucze SSH w systemie hostującym serwer SSH. Nie próbuj generować ich na serwerze, który nie obsługuje sesji SSH, i skopiuj je na komputer hosta SSH. To nie zadziała.

Aby rozpocząć proces generowania klucza, otwórz terminal. W oknie terminala uruchom:

ssh-keygen -t rsa

Uruchomienie ssh-keygen wypisze „Generowanie pary kluczy publicznych / prywatnych rsa”. Oznacza to, że system generuje zarówno klucz publiczny, jak i klucz prywatny do użycia. Klucze publiczne to te, z których może korzystać każdy, a rozdawanie powinno być w porządku. Z drugiej strony klucz prywatny to coś, czego nigdy nie powinieneś nikomu udostępniać. Stąd nazwa „prywatny”.

Klucze zapiszą się w /home/username/.ssh/id_rsa.

Uwaga: NIE USUWAJ folderu ~ / .ssh, ponieważ zawiera on Twoje klucze. Jeśli w jakikolwiek sposób zmodyfikujesz ten folder, a następnie spróbujesz zalogować się do tego komputera zdalnie, monit SSH nie powiedzie się. Wydrukuje również ostrzeżenie i zablokuje Cię.

Klucze SSH na zdalnym komputerze

Teraz, gdy klucze SSH (zarówno publiczne, jak i prywatne) są utworzone i gotowe do użycia, musisz je skopiować do systemu, z którego chcesz się zalogować. Ważne jest, aby powtórzyć ten proces na wszystkich komputerach, na których planujesz zalogować się przez SSH. W przeciwnym razie osoby, które nie mają klucza, będą musiały zalogować się przy użyciu metody hasła.

Aby dodać klucze do systemu zdalnego, postępuj zgodnie z tym przykładem. Upewnij się, że robisz to z komputera hosta przez SSH.

ssh username@remote-host-name mkdir -p .ssh

Uruchomienie tego polecenia ssh spowoduje utworzenie ukrytego folderu ~ / .ssh w katalogu domowym komputera zdalnego (z użytkownikiem, który był używany do logowania). Ten folder jest ważny, ponieważ jest to miejsce, w którym będziemy kopiować nowo wygenerowane pliki kluczy SSH.

Aby skopiować pliki kluczy SSH, uruchom kolejne polecenie z komputera hosta SSH na komputer zdalny, który potrzebuje kluczy:

cat .ssh/id_rsa.pub | ssh username@remote-host-name 'cat >> .ssh/authorized_keys'

Kopiowanie zajmie kilka sekund, w zależności od szybkości sieci. Po zakończeniu zdalny komputer będzie miał wygenerowane klucze i będzie mógł zalogować się do hosta SSH bez hasła.

Tworzenie kopii zapasowych kluczy SSH

Klucze SSH to przydatne rzeczy i każdy z nich jest unikalny. Z tego powodu tworzenie ich kopii zapasowych jest najlepszym sposobem działania. Problem w tym, że jeśli zapiszesz go gdzie indziej, ktoś może znaleźć twój klucz SSH, zatrzymać go i użyć dla siebie. Pytanie brzmi, jaki jest dobry sposób na bezpieczne tworzenie kopii zapasowej klucza SSH? Szyfrowanie.

Najszybszym, najbardziej wydajnym (i najłatwiejszym) sposobem szyfrowania jest użycie GnuPG. Samo narzędzie jest wbudowane w większość narzędzi szyfrujących, które są już dostępne w systemie Linux, i jest używane, gdy pojawia się szyfrowanie plików. Aby zainstalować GnuPG, otwórz terminal i wyszukaj „gpg” w menedżerze pakietów. Program powinien być łatwy do znalezienia, nawet w bardzo mało znanych dystrybucjach Linuksa.

Po uruchomieniu GPG rozpocznij proces szyfrowania, kompresując katalog ~ / .ssh do pliku archiwum tar. Dzięki temu nie będzie potrzeby szyfrowania osobno każdego pliku w folderze ~ / .ssh.

tar -czvf ssh-stuff.tar.gz /home/username/.ssh

Po zakończeniu kompresji rozpocznij proces szyfrowania.

Uwaga: przed zaszyfrowaniem uruchom gpg w terminalu, aby wygenerować nową bazę kluczy.

gpg -c ssh-stuff.tar.gz

Po zakończeniu procesu szyfrowania GnuPG umieści plik z etykietą „ssh-stuff.tar.gz.gpg”. Możesz usunąć oryginalną, odblokowaną wersję pliku. Aby odszyfrować archiwum kopii zapasowych, wykonaj następujące czynności:

gpg ssh-stuff.tar.gz.gpg