Traktuj poważnie cyberbezpieczeństwo i używaj kluczy SSH, aby uzyskać dostęp do zdalnego logowania. Są one bezpieczniejszym sposobem łączenia niż hasła. W tym artykule pokażemy, jak generować, instalować i używać kluczy SSH w systemie Linux.
Co jest nie tak z hasłami?
Secure Shell (SSH) to szyfrowany protokół używany do logowania się do kont użytkowników na zdalnych komputerach z systemem Linux lub Unix. Zwykle takie konta użytkowników są zabezpieczone hasłami. Logując się do komputera zdalnego, musisz podać nazwę użytkownika i hasło do konta, na które się logujesz.
Hasła są najpowszechniejszym sposobem zabezpieczenia dostępu do zasobów komputerowych. Mimo to mają swoje wady. Ludzie często wybierają słabe hasła, dzielą się nimi lub używają tego samego hasła w wielu systemach.
Klucze SSH są znacznie bezpieczniejsze, a po skonfigurowaniu są równie łatwe w użyciu jak hasła.
Co sprawia, że klucze SSH są bezpieczne?
Klucze SSH są tworzone i używane w parach. Te dwa klucze są powiązane i zabezpieczone kryptograficznie. Jeden to klucz publiczny, a drugi to klucz prywatny. Są one powiązane z Twoim kontem użytkownika. Jeśli wielu użytkowników na jednym komputerze korzysta z kluczy SSH, każdy z nich otrzyma własną parę kluczy.
Twój klucz prywatny jest zazwyczaj instalowany w folderze domowym, a klucz publiczny na komputerze zdalnym, do którego będziesz musiał mieć dostęp.
Klucz prywatny musi być bezpieczny. Jeśli jest dostępny dla innych, sytuacja jest podobna do tej, gdyby odkryli Twoje hasło. Rozsądnym i wysoce zalecanym środkiem ostrożności jest zaszyfrowanie klucza prywatnego na komputerze za pomocą solidnego hasła.
Klucz publiczny można swobodnie udostępniać bez uszczerbku dla bezpieczeństwa. Nie można określić, jaki jest klucz prywatny, na podstawie klucza publicznego. Klucz prywatny może szyfrować wiadomości, które mogą być odszyfrowane tylko przez klucz publiczny.
Kiedy wysyłasz żądanie połączenia, komputer zdalny używa swojej kopii klucza publicznego do utworzenia zaszyfrowanej wiadomości. Wiadomość ta zawiera identyfikator sesji i inne metadane. Tylko komputer posiadający klucz prywatny – Twój komputer – może odszyfrować tę wiadomość.
Po odszyfrowaniu wiadomości komputer wysyła własną zaszyfrowaną wiadomość z powrotem do komputera zdalnego, która zawiera identyfikator sesji otrzymany z komputera zdalnego.
Komputer zdalny wie, że jesteś tym, za kogo się podajesz, ponieważ tylko Twój klucz prywatny może wyodrębnić identyfikator sesji z wiadomości wysłanej do Twojego komputera.
Upewnij się, że masz dostęp do komputera zdalnego
Upewnij się, że możesz zdalnie połączyć się z komputerem zdalnym i zalogować do niego. Dowodzi to, że nazwa użytkownika i hasło są poprawne oraz że konto jest skonfigurowane na komputerze zdalnym.
Nie próbuj nic robić z kluczami SSH, dopóki nie zweryfikujesz, że możesz używać SSH z hasłami do łączenia się z komputerem docelowym.
W tym przykładzie osoba z kontem użytkownika o nazwie dave jest zalogowana na komputerze o nazwie newsblog.pl i zamierza połączyć się z innym komputerem o nazwie Sulaco.
Wpisują następujące polecenie:
ssh dave@sulaco
Są proszeni o podanie hasła, wpisują je i łączą się z Sulaco. Ich wiersz poleceń zmienia się, aby to potwierdzić.
To wszystko potwierdzenie, którego potrzebujemy, więc użytkownik Dave może odłączyć się od Sulaco za pomocą polecenia exit:
exit
Otrzymują wiadomość o rozłączeniu, a ich wiersz poleceń wraca do dave @ newsblog.pl.
Tworzenie pary kluczy SSH
Te instrukcje zostały przetestowane w dystrybucjach Linuksa Ubuntu, Fedora i Manjaro. W każdym przypadku proces był identyczny i nie było potrzeby instalowania nowego oprogramowania na żadnej z maszyn testowych.
Aby wygenerować klucze SSH, wpisz następujące polecenie:
ssh-keygen
Rozpoczyna się proces generowania. Zostaniesz zapytany, gdzie chcesz przechowywać klucze SSH. Naciśnij klawisz Enter, aby zaakceptować domyślną lokalizację. Uprawnienia do folderu zapewnią go tylko do Twojego użytku.
Zostaniesz poproszony o podanie hasła. Zalecamy wprowadzenie tutaj hasła. I pamiętaj, co to jest! Możesz nacisnąć Enter, aby nie mieć hasła, ale to nie jest dobry pomysł. Hasło składające się z trzech lub czterech niepowiązanych ze sobą słów, połączonych ze sobą, tworzy bardzo solidne hasło.
Zostaniesz poproszony o ponowne wprowadzenie tego samego hasła, aby potwierdzić, że wpisałeś to, co myślałeś, że wpisałeś.
Klucze SSH są generowane i przechowywane dla Ciebie.
Możesz zignorować wyświetlany „randomart”. Niektóre komputery zdalne mogą wyświetlać losową grafikę przy każdym połączeniu. Rozpoznasz, czy grafika się zmieni, co może sugerować, że klucze SSH dla tego serwera zostały zmienione.
Instalowanie klucza publicznego
Musimy zainstalować Twój klucz publiczny na Sulaco, komputerze zdalnym, aby wiedział, że klucz publiczny należy do Ciebie.
Robimy to za pomocą polecenia ssh-copy-id. To polecenie nawiązuje połączenie z komputerem zdalnym, podobnie jak zwykłe polecenie ssh, ale zamiast zezwalać na logowanie, przekazuje publiczny klucz SSH.
ssh-copy-id dave@sulaco
Chociaż nie logujesz się do komputera zdalnego, nadal musisz uwierzytelnić się za pomocą hasła. Komputer zdalny musi zidentyfikować konto użytkownika, do którego należy nowy klucz SSH.
Pamiętaj, że hasło, które musisz tutaj podać, to hasło do konta użytkownika, na które się logujesz. To nie jest hasło właśnie utworzone.
Po zweryfikowaniu hasła, ssh-copy-id przesyła Twój klucz publiczny do zdalnego komputera.
Powrócisz do wiersza poleceń swojego komputera. Nie jesteś połączony z komputerem zdalnym.
Łączenie za pomocą kluczy SSH
Postępuj zgodnie z sugestią i spróbuj połączyć się ze zdalnym komputerem.
ssh dave@sulaco
Ponieważ proces łączenia będzie wymagał dostępu do klucza prywatnego, a klucze SSH zostały zabezpieczone hasłem, musisz podać swoje hasło, aby połączenie mogło być kontynuowane.
Wprowadź swoje hasło i kliknij przycisk Odblokuj.
Po wprowadzeniu hasła w sesji terminala nie będziesz musiał go ponownie wpisywać, dopóki masz otwarte okno terminala. Możesz łączyć się i rozłączać z dowolną liczbą sesji zdalnych, bez ponownego wpisywania hasła.
Możesz zaznaczyć pole wyboru „Automatycznie odblokuj ten klucz, gdy jestem zalogowany”, ale zmniejszy to Twoje bezpieczeństwo. Jeśli zostawisz komputer bez nadzoru, każdy może nawiązać połączenie ze zdalnymi komputerami, które mają Twój klucz publiczny.
Po wprowadzeniu hasła zostaniesz połączony z komputerem zdalnym.
Aby zweryfikować proces jeszcze raz od końca do końca, rozłącz się za pomocą polecenia exit i ponownie połącz się z komputerem zdalnym z tego samego okna terminala.
ssh dave@sulaco
Zostaniesz połączony z komputerem zdalnym bez konieczności podawania hasła.
Bez haseł, ale zwiększone bezpieczeństwo
Eksperci od cyberbezpieczeństwa mówią o czymś, co nazywa się tarciami bezpieczeństwa. To drobny ból, który musisz znosić, aby uzyskać dodatkowe bezpieczeństwo. Zwykle wymagany jest jakiś dodatkowy krok lub dwa, aby przyjąć bezpieczniejszą metodę pracy. Większość ludzi tego nie lubi i woli niższe bezpieczeństwo bez dodatkowych przeszkód. Taka jest ludzka natura.
Dzięki kluczom SSH zyskujesz większe bezpieczeństwo i wygodę. To zdecydowanie wygrana-wygrana.