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.
Treść
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
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.
ssh-keygen
, a następnie naciśnij klawisz Enter . 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ę.
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.
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"
.
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
.
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ł.
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łą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.
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ć:
sudo gedit /etc/ssh/sshd_config
. sudo systemctl restart ssh
serwer sudo systemctl restart ssh
. 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.
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:
sudo ufw app list
. sudo ufw allow OpenSSH
. sudo ufw enable
. sudo ufw status
, po czym zobaczysz status sieci. 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.