Podstawowym sposobem połączenia się z serwerem Linux jest Protokół SSH. Ten typ połączenia jest bezpieczny, ponieważ wszystkie przesyłane przez niego dane są szyfrowane. Aby do nawiąż połączenie SSH powinieneś skonfigurować go na serwerze zdalnym, z którym chcesz się połączyć, a klienta po stronie użytkownika. Jest mnóstwo oprogramowania do połączenia SSH. Jeśli chodzi o Linuksa, pakiet OpenSSH jest najpopularniejszy, a w przypadku Windowsa ludzie najczęściej używają PuTTY.
Przyjrzyjmy się bliżej konfiguracji serwera na przykładzie Ubuntu Server 18.04, a następnie spróbujmy połączyć się z serwerem z poziomu systemu Linux i Windows.
Wszystko, co zrobimy, będzie z konta zwykłego użytkownika. W tym przypadku utworzyliśmy użytkownika „Mihail", i "korzeńKonto jest domyślnie wyłączone.
Konfiguracja po stronie serwera
Skonfiguruj pakiet, uruchamiając to polecenie:
sudo apt install openssh-server
Po zakończeniu instalacji upewnij się, że usługa jest uruchomiona. Użyj tego polecenia:
systemctl status sshd
Stan „Aktywny (bieganie)„oznacza, że usługa jest włączona i działa normalnie.
Aby uniknąć blokowania połączeń przychodzących przez zaporę sieciową, należy ją wyłączyć. W tym artykule nie będziemy bowiem konfigurować zapory sieciowej.
Użyj tego polecenia:
sudo ufw disable
Na tym etapie możesz już połączyć się z serwerem. Przy domyślnych ustawieniach serwer umożliwia połączenie ze standardowym portem 22 z uwierzytelnianiem opartym na haśle.
Połączenie SSH z Linuksa
Z reguły klient OpenSSH jest instalowany domyślnie na Linuksie i nie wymaga dodatkowej ręcznej konfiguracji. Połączenie można nawiązać z terminala za pomocą polecenia ssh. Parametrami w tym przypadku byłyby nazwa użytkownika i adres IP zdalnego serwera. Na naszym serwerze testowym, którego używamy jako przykładu, jest tylko jedno konto „mihail”, więc użyjemy tego.
ssh [email protected]
Przy pierwszym połączeniu będziesz musiał potwierdzić dodanie klucza publicznego serwera do bazy danych, dlatego odpowiedz „tak”. Następnie możesz wprowadzić hasło. Jeśli połączenie zostanie nawiązane pomyślnie, zobaczysz tekst powitalny wiersza poleceń serwera. Teraz wszystkie polecenia zostaną wykonane bezpośrednio na serwerze zdalnym.
SSH z systemu Windows
Otwórz Putty i ustaw parametry połączenia. Upewnij się, że przełącznik „Rodzaj połączenia„zwrócono się do SSH. Wprowadź adres IP w polu „Nazwa hostapole „, wartość domyślna” 22 do "Port"I kliknij"Otwarte".
Przy pierwszym połączeniu kit poprosi Cię o potwierdzenie, że ufasz temu serwerowi, więc kliknij „Tak"
Po wpisaniu loginu i hasła zobaczysz wiersz poleceń zdalnego serwera.
Uwierzytelnianie za pomocą klucza. Zwiększanie poziomu bezpieczeństwa
Gdy klient próbuje nawiązać bezpieczne połączenie z serwerem przez SSH, przed zezwoleniem na połączenie serwer wymaga uwierzytelnienia (weryfikacji) klienta. Jak wspomniano wcześniej, uwierzytelnianie oparte na haśle jest zwykle używane domyślnie. Nie zapewnia ono solidnego bezpieczeństwa, ponieważ zawsze istnieje sposób na jego brutalne wymuszenie. Poza tym uwierzytelnianie za pomocą hasła nie ma zastosowania do połączeń SSH z użyciem skryptów.
Do tego typu zadań istnieje specjalna metoda uwierzytelniania za pomocą klucza. Chodzi o to, że klient generuje klucze prywatne i publiczne, a następnie klucz publiczny jest wysyłany do serwera. Po tym nie potrzebujesz hasła, aby połączyć się z serwerem, ponieważ uwierzytelnianie jest przeprowadzane na podstawie kluczy publicznych i prywatnych klienta. Aby zapewnić dobry poziom bezpieczeństwa, dostęp do klucza prywatnego powinien być ograniczony. Ze względu na fakt, że klucz prywatny jest przechowywany po stronie klienta i nie jest przesyłany przez sieć, ta metoda jest uważana za bezpieczniejszą.
Uwierzytelnianie za pomocą klucza w systemie Linux
Wygenerujmy klucze publiczne i prywatne na kliencie za pomocą oprogramowania narzędziowego ssh-keygen. Narzędzie zasugeruje zmianę ścieżki do klucza prywatnego i wprowadzi hasło dla dodatkowego bezpieczeństwa. Pozostaw wszystkie parametry domyślnie, naciskając Enter przy wszystkich żądaniach.
W rezultacie w katalogu domowym w folderze .ssh znajdziesz wygenerowane dwa pliki: id_rsa oraz id_rsa.pub zawierające odpowiednio klucze prywatne i publiczne.
Następnie będziesz musiał wysłać klucz publiczny na serwer. Aby to zrobić, skopiuj zawartość „id_rsa.pub”plik do”~/.ssh/authorized_keys” plik na serwerze. Przejdźmy najłatwiejszą drogą z pomocą „ssh-copy-id” narzędzie. Wprowadź login i adres IP serwera, tak jak w przypadku zwykłego połączenia. Po wprowadzeniu hasła klucz publiczny klienta zostanie automatycznie skopiowany na serwer. Uruchom to polecenie:
ssh-copy-id [email protected]
Po wykonaniu wszystkich tych czynności serwer nie będzie już wymagał podawania hasła.
Uwierzytelnianie za pomocą klucza w systemie Windows
Otwarte PUTTYGEN i kliknij "Wygeneruj Aby wygenerować klucze, wystarczy przesunąć myszkę nad ekranem, a narzędzie losowo wygeneruje klucze.
Po wygenerowaniu kluczy kliknij „Zapisz klucz prywatny” i zapisz go do pliku z kluczem prywatnym na swoim dysku. Możesz ustawić dowolną ścieżkę, ale nieco później będziesz musiał ją określić w Putty. Następnie skopiuj klucz publiczny z górnej części okna.
Wyślijmy klucz publiczny, po prostu kopiując go do terminala. Otwórz kit i połącz się z serwerem jak zwykle. Teraz utwórzmy „.ssh/autoryzowane_klucze„i uniemożliwić innym użytkownikom dostęp do pliku, tak aby mógł go udostępnić tylko twórca.
mkdir .ssh
touch .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
Po utworzeniu pliku umieść w nim klucz publiczny klienta. Na poprzednim etapie skopiowaliśmy klucz publiczny do schowka. Aby zapisać zawartość schowka w pliku, użyj polecenia cat i przekierowania wyjścia.
cat > .ssh/authorized_keys
Po wpisaniu polecenia kliknij prawym przyciskiem myszy w oknie terminala i wklej to, co jest w schowku. Aby potwierdzić dane wejściowe, naciśnij „Ctrl + D”skrót i rozłączenie z serwerem.
Teraz podajmy ścieżkę do klucza prywatnego w Putty i ponownie połączmy się z serwerem.
Od teraz, aby połączyć się z serwerem, wystarczy wpisać nazwę użytkownika. Jeśli próbujesz połączyć się z serwerem z innego urządzenia, które nie ma odpowiedniego klucza prywatnego, serwer poprosi o hasło. Po skonfigurowaniu uwierzytelniania opartego na kluczu możesz zabronić dostępu za pomocą hasła.