Jak generować i zarządzać klawiszami SSH w Linux

Jak generować i zarządzać klawiszami SSH w Linux

Protokół SSH (Secure Shell) zapewnia możliwość wykonywania zaszyfrowanej komunikacji w sieci komputerowych. Typowe operacje, które możemy wykonać za pomocą protokołu to zdalne logowanie i zdalne wykonywanie poleceń. Kiedy logujemy się na zdalnym komputerze (z ssh Na przykład narzędzie) proszeni o podanie hasła dla konta, którego używamy do zalogowania. W celu zwiększenia bezpieczeństwa możemy zdecydować o użyciu klawiszy SSH jako poświadczeń: Po odpowiednim skonfigurowaniu serwera SSH, aby móc się zalogować, musimy coś wiedzieć (hasło), ale także mieć coś (klucz). W tym samouczku widzimy, jak generować, zarządzać i korzystać z klawiszy SSH.

W tym samouczku się nauczysz:

  • Co to jest klawiatura SSH
  • Jaka jest różnica między prywatnym i publicznym kluczem SSH a jaka jest ich rola
  • Jak generować klawiaturę SSH
  • Jak zmodyfikować hasło prywatnego klucza SSH
  • Jak przesyłać klucze publiczne na serwer SSH
Jak generować i zarządzać klawiszami SSH w Linux

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny dystrybucja
Oprogramowanie Narzędzia OpenSsh
Inny Żadne inne wymagania
Konwencje # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-wymaga wykonania Linux-commands jako zwykłego niewidzianego użytkownika

Jak działają klawiatury SSH

Klawisze SSH są używane jako poświadczenia logowania, często zamiast prostych haseł do jasnego tekstu. Działają w parach: zawsze mamy publiczny i a prywatny klucz. Klucz prywatny musi pozostać na lokalnym komputerze, który działa jako klient: jest używany odszyfrować informacje i nigdy nie można ich udostępniać. Z drugiej strony klucz publiczny jest używany do szyfrowania danych i musi być kopiowany na serwerze zdalnym (jego zawartość jest kopiowana w ~/.ssh/autoryzowane_keys Plik w katalogu $ HOME użytkownika, który logujemy się na serwerze - zobaczymy, jak wykonać taką operację w trakcie tego samouczka).

Możliwość korzystania z SSH-Keys jako poświadczeń logowania musi być dozwolona przez administrator systemu, ustawiając Pubkeyauthentication opcja Tak w /etc/ssh/sshd.konfigurator plik. Zarówno czyste hasła tekstowe, jak i klucze publiczne mogą być dozwolone jako metody uwierzytelniania w tym samym czasie, lub, na przykład, można zdecydować o dostępie tylko za pośrednictwem kluczy publicznych.

Narzędzia i narzędzia, których użyjemy w tym samouczku, są domyślnie zainstalowane we wszystkich głównych dystrybucjach Linux, w ramach pakietu oprogramowania OpenSsh.



Generowanie klawiatury SSH

Generowanie klawiatury SSH jest bardzo prostą operacją: wszystko, co musimy zrobić, to użyć ssh-keygen pożytek. Najłatwiejszym sposobem wykonywania operacji jest po prostu wywołanie polecenia bez żadnego argumentu lub opcji:

$ ssh-keygen generujący publiczną/prywatną parę kluczy RSA. Wprowadź plik, w którym można zapisać klucz (/home/egdoc/.SSH/ID_RSA): Wprowadź hasło (pusta dla braku hasła): Wprowadź ponownie ten sam passfraza: Twoja identyfikacja została zapisana w/home/egdoc//.ssh/id_rsa Twój klucz publiczny został zapisany w/home/egdoc//.ssh/id_rsa.Pub Kluczowy odcisk palca to: SHA256: JRCJ3A3EQ4WO/LX4VACCPCKYEAYU0AI80EMCDA7M5DK EGDOC@Fingolfin Randomiczny obraz klucza to: + --- [RSA 3072] ---- + | =.+.o . |. |. * = O… | |. E… o + . |. | . o+. o + .|. |. OS. + O o.|. |. o + o.+ O | | . O o.OB.O… | |. O o .B.B . |. |. +… Oo = . |. +---- [SHA256]-----+ 

Przeanalizujmy, co się stanie, gdy wywołaj polecenie w ten sposób. Pierwszą rzeczą, o którą jesteśmy proszeni, jest to, gdzie należy przechowywać wygenerowane klucze: domyślnie wywoływany jest wygenerowany klucz prywatny id_rsa, a nazwa publicznego jest uzyskiwana przez dodanie .pub rozszerzenia do tego. Oba z nich domyślnie są tworzone wewnątrz ~/.ssh informator; Jesteśmy jednak bezpłatne, aby podać alternatywne nazwy i lokalizację.

Drugą rzeczą, o którą jesteśmy proszeni, jest zapewnienie fraza: Służy do zabezpieczenia klucza prywatnego. Możemy albo wejść do passfrazy lub po prostu nacisnąć Enter i pozostawić pole puste. W pierwszym przypadku zostaniemy poproszeni o podanie hasła, którego używaliśmy za każdym razem, gdy próbujemy użyć klucza. Jeśli zamiast tego opuścimy pole pola, możemy osiągnąć login bez hasła na serwerze: może to stanowić ryzyko bezpieczeństwa, ponieważ wszyscy posiadający dostęp do klucza mogą z łatwością podszywać się pod uwagę; Z drugiej strony ta konfiguracja jest zwykle używana do wykonywania operacji bez opieki za pośrednictwem SSH, jak na przykład zaplanowane kopie zapasowe.

Po podaniu hasła generowane są klucze i kluczowy odcisk palca I Obraz losowy są wyświetlane na ekranie. Zrobione! W tym momencie mamy nasz klawiaturę SSH.

Zmień typ klucza i rozmiar bitów

Domyślnie, gdy żadne konkretne opcje nie są przekazywane do ssh-keygen polecenie, an RSA Para kluczowa jest generowana o rozmiarze 3072 bity. Aby użyć alternatywnego typu klucza, musimy użyć -T opcja ssh-keygen i podaj rodzaj klucza, którego chcemy użyć jako jego argumentu. Dostępne typy kluczowe to:

  • DSA
  • Ecdsa
  • Ecdsa-sk
  • ED25519
  • ED25519-SK
  • RSA

Każdy typ klucza ma domyślnie pod względem wielkości bitu. Klucze DSA, na przykład 1024 bity, podczas gdy dla kluczy ECDSA, jak stwierdzono w instrukcji:

-B Flaga określa długość klucza, wybierając z jednej z krzywej eliptycznej: 256, 384 lub 521 bitów.

Inne kluczowe typy, takie jak ECDSA-SK, ED25519 i ED25519-SK, mają stałą długość, której nie można zmienić.

Tam, gdzie to możliwe, aby zmienić rozmiar bitu, którego należy użyć do generowania kluczy, możemy użyć -B opcja ssh-keygen użyteczność i przekazuj liczbę wielkości bitu jako jego argument. Powiedzmy, że chcemy wygenerować klucz RSA 4096 bity (zamiast domyślne 3072); Bieglibyśmy:

$ ssh -keygen -b 4096 


Określ ścieżkę kluczy nie interaktywnie

Jak widzieliśmy w przykładzie, gdy nie określono inaczej, będzie domyślna nazwa używana dla wygenerowanych kluczy id_rsa. Oczywiście możemy to zmienić interaktywnie, na żądanie, ale co, jeśli chcemy go wcześniej podać? Cóż, w takim przypadku możemy się wywołać ssh-keygen razem z -F opcja i przekazuj nazwę pliku do użycia dla klucza jako jego argumentu. Załóżmy, że chcemy, aby nasze klucze były przechowywane jako ~/.SSH/LINUXCONFIG_RSA (prywatny) i ~/.SSH/LINUXCONFIG_RSA.pub (publiczny);
Bieglibyśmy:

$ ssh -keygen -f ~/.SSH/LINUXCONFIG_RSA 

Zmiana hasła do klucza prywatnego

Jak już widzieliśmy, kiedy tworzymy klawiaturę SSH, mamy szansę chronić klucz prywatny za pomocą hasła, które możemy podać na żądanie. Co jeśli chcemy kiedyś zmodyfikować to hasło w przyszłości? Jak możemy zmienić hasło klucza prywatnego?

To jest łatwe! Wszystko, co musimy zrobić, to wywołać ssh-keygen użyteczność z -P opcja. Kiedy wywołamy polecenie z tą opcją, najpierw zostaniemy poproszeni o dostarczenie ścieżki klucza prywatnego, którą chcemy zmienić, wówczas zostaniemy poproszeni o podanie starej hasła używanego do niej (jeśli w ogóle), i wreszcie będziemy poprosił o dwukrotnie podjęcie nowej hasła:

$ ssh -keygen -p Wpisz plik, w którym klucz jest (/home/egdoc/.SSH/ID_RSA): Wprowadź starą hasło: Klucz ma komentarz „Wprowadź nową hasło (pusta dla braku hasła): Wprowadź ponownie ten sam passfraza: Twoja identyfikacja została zapisana za pomocą nowej hasła. 

Domyślnym kluczem, który zostanie wybrany do zmiany hasła, jest to ~/.ssh/id_rsa, Tak jak dzieje się w czasie tworzenia. Jeśli chcemy podać ścieżkę klucza prywatnego bezpośrednio i nieinteracyjnie, możemy ponownie użyć -F opcja i przepustka
Kluczowa ścieżka jako argument, na przykład:

$ ssh -keygen -p -f ~/.ssh/id_rsa 


Ładowanie klucza publicznego na serwer

Aby móc korzystać z klawiszy SSH, które wygenerowaliśmy jako metoda uwierzytelniania na zdalnym serwerze, musimy przesłać na to nasz klucz publiczny. Zestaw narzędzi OpenSSH zapewnia narzędzie, które zostało specjalnie zaprojektowane do wykonania tego zadania:
ssh-copy-id. Oto przykład jego użycia. Aby skopiować domyślny klucz SSH id_rsa.pub Na zdalnym serwerze uruchomilibyśmy:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 

To, co zrobiliśmy w powyższym przykładzie, jest dość proste. Wywołaliśmy ssh-copy-id użyteczność z -I Opcja: Ta opcja pozwól nam określić klucz publiczny, którego należy użyć. Podajemy jego klucz jako argument opcji ( .pub Sufiks jest dodawany automatycznie, jeśli nie jest obecny). Dostarczonym przez nas głównym argumentem jest zamiast tego użytkownik, którego chcemy zalogować się jako (opcjonalnie) wraz z adresem IP serwera.

Wyjście powyższego polecenia będzie czymś podobnym do następujących:

/usr/bin/ssh-copy-id: Informacje: Źródło klawiszy do zainstalowania: "/home/egdoc/.ssh/id_rsa.pub "/usr/bin/ssh-copy-id: Informacje: próba zalogowania się z nowymi klawiszami, w celu odfiltrowania każdego, które są już zainstalowane/usr/bin/ssh-copy-id: informacja: 1 klucz (s) pozostają do zainstalowania - jeśli masz monit, teraz ma zainstalować nowe klawisze [email protected]ło 39: 

Aby klawisz został zainstalowany na serwerze SSH, powinniśmy najpierw podać bieżące hasło, których używamy do zalogowania się. Po tym, jeśli wszystko pójdzie zgodnie z oczekiwaniami, zobaczymy następującą odpowiedź:

Liczba dodanych kluczy: 1 Teraz spróbuj zalogować się do komputera, z: „SSH '[email protected] '"i sprawdź, czy upewnij się, że dodano tylko klucze, które chciałeś. 

Jeśli nie jesteśmy pewni, jakie klucze byłyby kopiowane na zdalnym serwerze, możemy uruchomić ssh-copy-id z -N opcja wykonania próba: Klucze nie będą instalowane na serwerze; Zamiast tego te, które zostaną skopiowane, zostaną zgłoszone na ekranie.

Domyślny port używany przez serwer SSH to 22; Czasami jednak administrator systemu może zdecydować o tym, aby uniknąć najbardziej ogólnych ataków brutalnej siły. W takich przypadkach cztery nasze połączenie SSH do pracy, musimy użyć -P (Krótkie dla --Port) Opcja podczas wywoływania ssh-copy-id polecić i przejść port, który powinien być używany do połączenia jako jego argument. Zakładając, że użyty port jest 15342, Na przykład uruchomimy:

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 15342 [email protected] 

Wnioski

W tym samouczku poznaliśmy podstawy kluczy SSH: widzieliśmy, że kluczowy para składa się również z klucza publicznego i prywatnego, do czego są używane i jak należy je traktować. Widzieliśmy, jak wygenerować klawiaturę, jaki jest inny typ kluczy, którego możemy użyć i jak możemy określić ich rozmiar w bitach w momencie tworzenia. Widzieliśmy również, w jaki sposób klucz prywatny SSH może być chroniony hasłem i jak możemy je zmienić. Wreszcie dowiedzieliśmy się, jak możemy użyć ssh-copy-id narzędzie do skopiowania określonego klucza publicznego na serwerze docelowym.

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Jak skonfigurować serwer OpenVPN na Ubuntu 20.04
  • Mastering Bash Script Loops
  • Jak zarządzać połączeniami bezprzewodowymi za pomocą IWD w Linux
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Czy Linux może uzyskać wirusy? Badanie podatności Linuksa…
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Hung Linux System? Jak uciec do wiersza poleceń i…
  • Lista klientów FTP i instalacja na Ubuntu 22.04 Linux…