Skonfiguruj SSH w Ubuntu

Technologia SSH (Secure Shell) umożliwia bezpieczne zdalne sterowanie komputerem poprzez bezpieczne połączenie. SSH szyfruje wszystkie przesyłane pliki, w tym hasła, a także przesyła dowolny protokół sieciowy. Aby narzędzie działało poprawnie, konieczne jest nie tylko jego zainstalowanie, ale także jego konfiguracja. Chcielibyśmy porozmawiać o produkcie głównej konfiguracji w tym artykule, biorąc jako przykład najnowszą wersję systemu operacyjnego Ubuntu, na którym będzie zlokalizowany serwer.

Skonfiguruj SSH w Ubuntu

Jeśli nie ukończyłeś instalacji na serwerze i komputerach klienckich, powinieneś to zrobić początkowo, ponieważ cała procedura jest dość prosta i nie zajmuje dużo czasu. Szczegółowe wskazówki na ten temat można znaleźć w naszym innym artykule pod następującym linkiem. Pokazuje również procedurę edycji pliku konfiguracyjnego i testowania SSH, więc dziś będziemy się rozwodzić nad innymi zadaniami.

Więcej szczegółów: Instalowanie serwera SSH w Ubuntu

Tworzenie pary kluczy RSA

Nowo zainstalowany SSH nie ma określonych kluczy do łączenia się z serwerem do klienta i odwrotnie. Wszystkie te parametry muszą być ustawione ręcznie natychmiast po dodaniu wszystkich składników protokołu. Para kluczy działa przy użyciu algorytmu RSA (skrót od nazw twórców Rivest, Shamir i Adleman). Dzięki temu systemowi szyfrowania klucze specjalne są szyfrowane za pomocą specjalnych algorytmów. Aby utworzyć parę kluczy publicznych, wystarczy wpisać odpowiednie polecenia w konsoli i postępować zgodnie z wyświetlanymi instrukcjami.

  1. Przełącz się na pracę z terminalem za pomocą dowolnej wygodnej metody, na przykład otwierając ją za pomocą menu lub kombinacji klawiszy Ctrl + Alt + T.
  2. Uruchom terminal w Ubuntu, aby dalej skonfigurować SSH

  3. Wpisz ssh-keygen , a następnie naciśnij klawisz Enter .
  4. Utwórz klucz SSH za pośrednictwem konsoli w systemie operacyjnym Ubuntu

  5. Zostaniesz poproszony o utworzenie pliku, w którym klucze zostaną zapisane. Jeśli chcesz pozostawić je w domyślnej lokalizacji, naciśnij klawisz Enter .
  6. Wybierz plik, aby zapisać klucze protokołu SSH w Ubuntu

  7. Klucz publiczny może być chroniony zwrotem kodowym. Jeśli chcesz skorzystać z tej opcji, w wyświetlonej linii wpisz hasło. Wprowadzone znaki nie będą wyświetlane. Nowa linia będzie musiała to powtórzyć.
  8. Wprowadzanie frazy kluczowej podczas tworzenia klucza SSH w Ubuntu

  9. Ponadto zobaczysz powiadomienie, że klucz został zapisany, a także będziesz mógł zapoznać się z jego losowym obrazem graficznym.
  10. Udane tworzenie kluczy dla SSH w systemie operacyjnym Ubuntu

Teraz jest utworzona para kluczy - tajna i publiczna, które będą używane do dalszego połączenia między komputerami. Wystarczy umieścić klucz na serwerze, aby uwierzytelnianie SSH powiodło się.

Kopiowanie klucza publicznego na serwer

Istnieją trzy metody kopiowania kluczy. Każdy z nich będzie optymalny w różnych sytuacjach, w których na przykład jedna z metod nie działa lub nie jest odpowiednia dla konkretnego użytkownika. Proponujemy rozważyć wszystkie trzy opcje, zaczynając od najprostszej i najskuteczniejszej.

Opcja 1: komenda ssh-copy-id

Polecenie ssh-copy-id jest wbudowane w system operacyjny, więc nie trzeba instalować żadnych dodatkowych komponentów, aby go uruchomić. Postępuj zgodnie z prostą składnią, aby skopiować klucz. W „Terminalu” musisz wpisać ssh-copy-id username@remote_host , gdzie nazwa_użytkownika @ zdalny_host to nazwa komputera zdalnego.

Skopiuj klucz SSH za pomocą specjalnego narzędzia w Ubuntu

Po pierwszym połączeniu otrzymasz powiadomienie:

The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Musisz określić opcję tak , aby kontynuować połączenie. Następnie narzędzie niezależnie wyszuka klucz w postaci pliku id_rsa.pub , który został utworzony wcześniej. Po pomyślnym wykryciu wyświetlany jest następujący wynik:

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Określ hasło ze zdalnego hosta, aby narzędzie mogło je wprowadzić. Narzędzie skopiuje dane z pliku klucza publicznego ~ / .ssh / id_rsa.pub , a następnie na ekranie pojawi się komunikat:

Number of key(s) added: 1

Teraz spróbuj zalogować się do komputera za pomocą: „ssh” [email protected] ””
sprawdź to.

Pojawienie się takiego tekstu oznacza, że ​​klucz został pomyślnie pobrany na komputer zdalny, a teraz nie będzie problemów z połączeniem.

Opcja 2: Skopiuj klucz publiczny przez SSH

Jeśli nie możesz użyć narzędzia wymienionego powyżej, ale masz hasło do logowania na zdalnym serwerze SSH, możesz ręcznie załadować klucz użytkownika, zapewniając w ten sposób dalsze stabilne uwierzytelnianie podczas łączenia. Używane dla tego polecenia cat , które odczytuje dane z pliku, a następnie zostaną wysłane na serwer. W konsoli będziesz musiał wejść do linii

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys" cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys" .

Przenieś skopiowany klucz przez specjalne narzędzie Ubuntu

Gdy pojawi się komunikat

The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

kontynuuj łączenie i wprowadź hasło, aby zalogować się na serwerze. Następnie klucz publiczny zostanie automatycznie skopiowany na koniec pliku konfiguracyjnego authorized_keys .

Opcja 3: Ręczne kopiowanie klucza publicznego

Jeśli nie ma dostępu do zdalnego komputera za pośrednictwem serwera SSH, wszystkie powyższe kroki są wykonywane ręcznie. Aby to zrobić, najpierw dowiedz się o kluczu na serwerze PC za pomocą komendy cat ~/.ssh/id_rsa.pub .

Zobacz kluczowe informacje za pomocą komendy cat w Ubuntu

Na ekranie pojawi się następujący wiersz: ssh-rsa + ключ в виде набора символов== demo@test . Następnie przejdź do pracy na zdalnym urządzeniu, gdzie utwórz nowy katalog za pomocą mkdir -p ~/.ssh . Dodatkowo tworzy plik authorized_keys . Następnie wstaw klucz, którego nauczyłeś się wcześniej, poprzez echo + строка публичного ключа >> ~/.ssh/authorized_keys . Następnie możesz spróbować uwierzytelnić się na serwerze bez używania haseł.

Uwierzytelnianie na serwerze za pomocą wygenerowanego klucza

W poprzedniej sekcji dowiedziałeś się o trzech metodach kopiowania klucza komputera zdalnego na serwer. Takie działania pozwolą ci połączyć się bez użycia hasła. Ta procedura jest wykonywana za pomocą wiersza poleceń, wpisując shh ssh username@remote_host , gdzie nazwa_użytkownika @ zdalny_host to nazwa użytkownika i host żądanego komputera. Po pierwszym połączeniu zostaniesz powiadomiony o nieznanym połączeniu i możesz kontynuować, wybierając opcję tak .

Połącz się ze zdalnym komputerem przez SSH w Ubuntu

Połączenie nastąpi automatycznie, jeśli podczas tworzenia pary kluczy nie określono hasła. W przeciwnym razie musisz najpierw wpisać go, aby kontynuować pracę z SSH.

Wyłącz uwierzytelnianie hasła

Pomyślne ustawienie kopiowania kluczy jest rozważane w sytuacji, gdy można wejść na serwer bez użycia hasła. Jednak możliwość uwierzytelnienia w ten sposób pozwala atakującym na użycie narzędzi do znalezienia hasła i włamania do bezpiecznego połączenia. Zabezpieczenie się przed takimi przypadkami pozwoli pełnemu wyłączyć hasło logowania w pliku konfiguracyjnym SSH. Będzie to wymagać:

  1. W Terminalu otwórz plik konfiguracyjny za pomocą edytora za pomocą polecenia sudo gedit /etc/ssh/sshd_config .
  2. Uruchom plik konfiguracyjny SSH poprzez edytor w Ubuntu

  3. Znajdź wiersz „PasswordAuthentication” i usuń znak # na początku, aby odkomentować parametr.
  4. Odkomentuj ciąg z uwierzytelnianiem hasła w Ubuntu

  5. Zmień wartość na no i zapisz bieżącą konfigurację.
  6. Wyłącz uwierzytelnianie za pomocą hasła SSH przez Ubuntu

  7. Zamknij edytor i uruchom sudo systemctl restart ssh serwer sudo systemctl restart ssh .
  8. Zrestartuj serwer SSH w systemie Ubuntu OS

Uwierzytelnianie hasłem zostanie wyłączone i będziesz mógł zalogować się na serwerze tylko za pomocą kluczy specjalnie do tego stworzonych za pomocą algorytmu RSA.

Konfigurowanie standardowej zapory ogniowej

W Ubuntu domyślną zaporą jest Uncomplicated Firewall (UFW). Pozwala zezwolić na połączenia dla wybranych usług. Każda aplikacja tworzy własny profil w tym narzędziu, a UFW zarządza nimi, zezwalając lub odmawiając połączeń. Konfigurowanie profilu SSH przez dodanie go do listy jest następujące:

  1. Otwórz listę profili zapory za pomocą polecenia sudo ufw app list .
  2. Wyświetl listę standardowych profili zapory w Ubuntu

  3. Wprowadź hasło do konta, aby wyświetlić informacje.
  4. Wprowadzanie hasła, aby wyświetlić listę standardowych profili zapory sieciowej Ubuntu

  5. Zobaczysz listę dostępnych aplikacji, wśród nich OpenSSH.
  6. Lista standardowych profili zapory w Ubuntu

  7. Teraz powinieneś zezwolić na połączenia przez SSH. Aby to zrobić, dodaj go do listy dozwolonych profili, używając sudo ufw allow OpenSSH .
  8. Dodaj serwer SSH, aby umożliwić połączenia z zaporą sieciową Ubuntu

  9. Włącz zaporę, aktualizując reguły, sudo ufw enable .
  10. Zrestartuj reguły aktualizacji zapory w Ubuntu

  11. Aby upewnić się, że połączenia są dozwolone, powinieneś ustawić sudo ufw status , po czym zobaczysz status sieci.
  12. Wyświetl listę dozwolonych połączeń zapory w Ubuntu

To kończy nasze instrukcje konfiguracji SSH dla Ubuntu. Dalsza konfiguracja pliku konfiguracyjnego i innych parametrów jest przeprowadzana osobiście przez każdego użytkownika na jego żądanie. Możesz zapoznać się z działaniem wszystkich komponentów SSH w oficjalnej dokumentacji protokołu.