Poważnie traktuj cyberbezpieczeństwo i używaj kluczy SSH, aby uzyskać dostęp do zdalnego logowania. Są bezpieczniejszym sposobem łączenia niż hasła. Pokażemy Ci, 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ę na konta użytkowników na zdalnych komputerach z systemem Linux lub Unix. Zazwyczaj takie konta użytkowników są zabezpieczone hasłami. Logując się na zdalnym komputerze, musisz podać nazwę użytkownika i hasło do konta, do którego się logujesz.
Hasła to najczęstszy sposób zabezpieczenia dostępu do zasobów obliczeniowych. Mimo to zabezpieczenia oparte na hasłach mają swoje wady. Ludzie wybierają słabe hasła, udostępniają hasła, używają tego samego hasła w wielu systemach i tak dalej.
Klucze SSH są znacznie bezpieczniejsze, a po ich skonfigurowaniu są tak samo łatwe w użyciu jak hasła.
Co sprawia, że klucze SSH są bezpieczne?
Klucze SSH są tworzone i używane w parach. Dwa klucze są połączone i zabezpieczone kryptograficznie. Jeden to Twój klucz publiczny, a drugi to Twój 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 zainstalowany w twoim folderze domowym (zazwyczaj), a klucz publiczny jest zainstalowany na zdalnym komputerze lub komputerach, do których będziesz musiał uzyskać dostęp.
Twój klucz prywatny musi być bezpieczny. Jeśli jest dostępny dla innych, jesteś w takiej samej sytuacji, jak gdyby odkryli Twoje hasło. Rozsądnym – i wysoce zalecanym – środkiem ostrożności jest szyfrowanie klucza prywatnego na komputerze za pomocą solidnego hasło.
Klucz publiczny można swobodnie udostępniać bez uszczerbku dla bezpieczeństwa. Na podstawie badania klucza publicznego nie można ustalić, czym jest klucz prywatny. Klucz prywatny może szyfrować wiadomości, które tylko klucz prywatny może odszyfrować.
Gdy wysyłasz żądanie połączenia, komputer zdalny używa swojej kopii klucza publicznego do utworzenia zaszyfrowanej wiadomości. Wiadomość zawiera identyfikator sesji i inne metadane. Tylko komputer posiadający klucz prywatny — Twój komputer — może odszyfrować tę wiadomość.
Twój komputer uzyskuje dostęp do Twojego klucza prywatnego i odszyfrowuje wiadomość. Następnie wysyła własną zaszyfrowaną wiadomość z powrotem do zdalnego komputera. Ta zaszyfrowana wiadomość zawiera między innymi identyfikator sesji otrzymany z komputera zdalnego.
Zdalny komputer wie teraz, że musisz być tym, za kogo się podajesz, ponieważ tylko Twój klucz prywatny może wyodrębnić identyfikator sesji z wiadomości wysłanej na Twój komputer.
Upewnij się, że możesz uzyskać dostęp do zdalnego komputera
Upewnij się, że możesz zdalnie połączyć się z komputerem zdalnym i zalogować się do niego. Dowodzi to, że nazwa użytkownika i hasło mają prawidłowe konto skonfigurowane na komputerze zdalnym i że poświadczenia są poprawne.
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 zalogowany do komputera o nazwie howtogeek
. Połączą się z innym komputerem o nazwie Sulaco
.
Wprowadzają następujące polecenie:
ssh dave@sulaco
Są pytani o hasło, wprowadzają je i są połączeni z Sulaco. Ich wiersz poleceń zmienia się, aby to potwierdzić.
To wszystko, czego potrzebujemy. Więc użytkownik dave
może się odłączyć od Sulaco
z exit
Komenda:
exit
Otrzymują wiadomość o rozłączeniu, a ich wiersz poleceń powraca do dave@howtogeek
.
Tworzenie pary kluczy SSH
Te instrukcje zostały przetestowane na dystrybucjach systemu Linux Ubuntu, Fedora i Manjaro. We wszystkich przypadkach 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ć lokalizację domyślną. Uprawnienia do folderu zabezpieczą go tylko do Twojego użytku.
Zostaniesz teraz poproszony o hasło. Radzimy wpisać tutaj hasło. I pamiętaj, co to jest! Możesz nacisnąć Enter, aby nie mieć hasła, ale nie jest to dobry pomysł. Hasło składające się z trzech lub czterech niepowiązanych ze sobą słów, połączonych razem, stworzy bardzo solidne hasło.
Zostaniesz poproszony o ponowne wprowadzenie tego samego hasła, aby sprawdzić, czy 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. Chodzi o to, że rozpoznasz, czy losowa grafika się zmieni, i będziesz podejrzliwy w stosunku do połączenia, ponieważ oznacza to, że klucze SSH dla tego serwera zostały zmienione.
Instalowanie klucza publicznego
Musimy zainstalować Twój klucz publiczny na Sulaco
, komputer zdalny, aby wiedział, że klucz publiczny należy do Ciebie.
Robimy to za pomocą ssh-copy-id
Komenda. To polecenie nawiązuje połączenie ze zdalnym komputerem, tak jak zwykłe ssh
polecenie, ale zamiast pozwalać na zalogowanie się, 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 określić, do którego konta użytkownika należy nowy klucz SSH.
Pamiętaj, że hasło, które musisz tutaj podać, jest hasłem do konta użytkownika, do którego się logujesz. To jest nie hasło, które właśnie utworzyłeś.
Po zweryfikowaniu hasła, ssh-copy-id
przesyła twój klucz publiczny do zdalnego komputera.
Wróciłeś do wiersza poleceń komputera. Nie pozostajesz podłączony do zdalnego komputera.
Łączenie za pomocą kluczy SSH
Postępuj zgodnie z sugestią i spróbuj połączyć się z komputerem zdalnym.
ssh dave@sulaco
Ponieważ proces łączenia będzie wymagał dostępu do Twojego klucza prywatnego, a Twoje klucze SSH są chronione 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ł wprowadzać go ponownie, dopóki okno terminala będzie otwarte. Możesz łączyć się i rozłączać z dowolną liczbą zdalnych sesji bez ponownego wprowadzania hasła.
Możesz zaznaczyć pole wyboru „Automatycznie odblokuj ten klucz, gdy jestem zalogowany”, ale zmniejszy to Twoje bezpieczeństwo. Jeśli pozostawisz swój komputer bez nadzoru, każdy może nawiązać połączenia z komputerami zdalnymi, które mają Twój klucz publiczny.
Po wprowadzeniu hasła zostaniesz połączony z komputerem zdalnym.
Aby ponownie zweryfikować proces od końca do końca, rozłącz się za pomocą exit
polecenie i ponownie połącz się ze zdalnym komputerem z tego samego okna terminala.
ssh dave@sulaco
Zostaniesz połączony ze zdalnym komputerem bez konieczności podawania hasła lub hasła.
Bez haseł, ale zwiększone bezpieczeństwo
Eksperci od cyberbezpieczeństwa mówią o czymś, co nazywa się tarciem o bezpieczeństwo. To drobny ból, który musisz znosić, aby uzyskać dodatkowe bezpieczeństwo. Zazwyczaj do przyjęcia bezpieczniejszej metody pracy potrzebny jest dodatkowy krok lub dwa. A większość ludzi tego nie lubi. W rzeczywistości wolą niższe bezpieczeństwo i brak tarcia. Taka jest ludzka natura.
Dzięki kluczom SSH zyskujesz większe bezpieczeństwo i większą wygodę. To zdecydowana wygrana.