Tutoriel Linux

Ponowne uruchomienie SSH w systemie Ubuntu: polecenie do użycia i sprawdzenia do wykonania

Débutant6 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Restart SSH w Ubuntu to proste polecenie. Problem polega na tym, że często wpływa ono na samą usługę umożliwiającą dostęp do serwera.

Na komputerze lokalnym ryzyko jest niskie. Na serwerze VPS lub serwerze zdalnym wolę sprawdzić kilka rzeczy przed naciśnięciem Enter. Zła konfiguracja, zapomniany port w zaporze lub pomyłka między… ssh I sshdi może się okazać, że będziesz szukał zapasowej konsoli.

Serwer Ubuntu z systemem Linux, bezpiecznym połączeniem SSH i ponownym uruchomieniem usługi

Polecenie ponownego uruchomienia SSH w systemie Ubuntu

W systemach Ubuntu i Debian usługa OpenSSH po stronie serwera jest zwykle nazywana sshNajbardziej bezpośrednie polecenie brzmi zatem:

sudo systemctl restart ssh

Następnie należy natychmiast sprawdzić, czy usługa powróciła do stanu aktywnego:

sudo systemctl status ssh --no-pager

Można również wykonać krótszą kontrolę, która jest wygodna w skrypcie lub szybkiej sesji:

systemctl jest aktywny ssh

Jeśli odpowiedź brzmi aktywnyUsługa jest uruchomiona. Jeśli otrzymasz przegrany, nieaktywny lub błąd nie znaleziono jednostki, nie zamykaj bieżącej sesji, dopóki nie zrozumiesz, dlaczego tak się dzieje.

Przed wyłączeniem usługi przetestuj konfigurację.

Jeśli zmodyfikowałeś /etc/ssh/sshd_configNajpierw przetestuj konfigurację. To sprawdzenie, które zawsze wykonuję przed zdalnym restartem SSH:

sudo /usr/sbin/sshd -t

Jeśli polecenie nic nie zwróci, to dobry znak. Jeśli wyświetli błąd, popraw plik przed ponownym uruchomieniem SSH. Aby przeprowadzić jawny test pliku głównego:

sudo /usr/sbin/sshd -t -f /etc/ssh/sshd_config

Ten test nie gwarantuje, że Twoja zapora sieciowa lub dostawca chmury obsługuje port SSH, ale zapobiega ponownemu uruchomieniu demona z nieprawidłową konfiguracją. Jest prosty, szybki i może oszczędzić Ci konieczności interwencji z wiersza poleceń.

Restart czy przeładowanie: co wybrać?

Aby wprowadzić zmianę w konfiguracji SSH, nie zawsze wymagany jest pełny restart. Jeśli usługa na to pozwala, ponowne uruchomienie jest mniej uciążliwe:

sudo systemctl przeładuj ssh

W praktyce używam przeładować w celu czystej zmiany konfiguracji po sshd -t Zweryfikowane. Używam uruchom ponownie gdy usługa jest zablokowana, po aktualizacji OpenSSH lub gdy chcę zacząć od nowa od nowa z czystego stanu.

Aby sprawdzić, co systemd wie o Twoim komputerze, przydatne będzie to polecenie:

systemctl list-unit-files 'ssh*'

W niektórych placówkach możesz również spotkać się z gniazdo sshW takim przypadku należy sprawdzić stan urządzenia przed dotknięciem:

sudo systemctl status ssh.socket --no-pager

Aby zrozumieć polecenia systemd bez mylenia usług, przeładowania i ponownego uruchomienia, możesz również ponownie przeczytać nasz przewodnik przydatne polecenia systemctl przed losowym ponownym uruchomieniem.

Sprawdź, czy port SSH nadal nasłuchuje

Usługa może być aktywna, ale SSH może nasłuchiwać na innym porcie niż ten, którego używasz. W typowym systemie Ubuntu portem tym często jest dwadzieścia dwa, ale nie jest to absolutna reguła.

Aby sprawdzić, które porty nasłuchują:

sudo ss -ltnp | grep ':22'

Jeżeli zmieniłeś port w konfiguracji SSH, zapytaj OpenSSH, do czego on właściwie służy:

sudo /usr/sbin/sshd -T | grep '^port'

Aby zagłębić się w ten temat, zapoznaj się z artykułem na temat netstat, ss i otwarte porty w systemie Linux zapewnia bardziej kompleksową metodę.

Rozważ również lokalną zaporę sieciową. Dzięki UFW weryfikacja jest natychmiastowa:

sudo ufw status verbose

Jeśli SSH nasłuchuje na porcie 2222, ale zapora sieciowa zezwala tylko na port 22, usługa może działać w pełni sprawnie, ale być niedostępna z zewnątrz. To samo dotyczy sytuacji, gdy dostawca hostingu narzuca zaporę sieciową lub grupę zabezpieczeń.

Sprawdź logi, jeśli ponowne uruchomienie się nie powiedzie

Jeśli status systemctl ssh oznacza błąd; zacznij od sprawdzenia logów usługi:

sudo journalctl -u ssh -b --no-pager | rozmiar -50

Możesz również śledzić wiadomości na żywo podczas ponownej próby:

sudo journalctl -u ssh -f

Najczęstsze błędy są dość oczywiste: nieznana opcja w sshd_config, port jest już w użyciu, brakuje klucza hosta, nieprawidłowe uprawnienia do pliku lub dyrektywa została umieszczona w niewłaściwym miejscu.

Jeśli po zmianie sieci lub ponownym uruchomieniu serwera musisz rozszerzyć zasięg swojej sieci, zapoznaj się z przewodnikiem journalctl i logi ostatniego rozruchu Linuksa pomoże Ci uporządkować błędy bez konieczności czytania całego dziennika systemowego.

Środki ostrożności, które należy podjąć na serwerze zdalnym

Jeśli łączysz się przez SSH z maszyną, którą zamierzasz modyfikować, utrzymuj otwartą sesję. Otwórz nawet drugą sesję przed ponownym uruchomieniem usługi:

użytkownik ssh@adres-serwera

Po ponownym uruchomieniu spróbuj nawiązać nowe połączenie z innego terminala. Jeśli nowe połączenie zadziała, możesz zamknąć stare. Jeśli się nie powiedzie, stara sesja może nadal Cię uratować.

Na serwerze produkcyjnym sprawdź również, czy masz dostęp do konsoli zapasowej u swojego dostawcy hostingu. Jest to szczególnie ważne, jeśli jednocześnie modyfikujesz port SSH, UFW, statyczny adres IP lub konfigurację sieci. Informacje na ten temat znajdziesz w artykule na temat… stały adres IP w Debianie zachowuje te same ostrożne odruchy po stronie sieci.

Kiedy należy ponownie uruchomić OpenSSH, a nie restartować komputer

Ponowne uruchomienie jest wystarczające, jeśli usługa jest zainstalowana, konfiguracja jest prawidłowa, a problem jest tymczasowy. Jeśli jednak urządzenie usługa ssh nie istnieje, jeśli brakuje pakietu OpenSSH Server lub jeśli serwer został zbyt dokładnie wyczyszczony, należy ponownie rozpocząć instalację.

W takim przypadku nie wymuszaj restartów w pętli. Najpierw sprawdź pakiet:

dpkg -l | grep openssh-server

Jeżeli nic nie zostanie zgłoszone, powtórz dedykowaną procedurę: czysto zainstaluj SSH na UbuntuPonowne uruchomienie nieuruchomionej usługi niczego nie rozwiąże.

Moja szybka metoda przed zatwierdzeniem

Kiedy muszę użyć protokołu SSH w systemie Ubuntu, wybieram prostą metodę: testuję konfigurację, jeśli to możliwe, restartuję system, jeśli to konieczne, a następnie sprawdzam port, zaporę sieciową i nowe połączenie.

sudo /usr/sbin/sshd -t
sudo systemctl przeładuj ssh
sudo systemctl status ssh --no-pager
sudo ss -ltnp | grep ':22'
sudo ufw status verbose

Jeśli pracujesz zdalnie, nie zamykaj aktywnej sesji, dopóki nie zostanie przetestowane nowe połączenie SSH. To prawdopodobnie najmniej dramatyczna wskazówka w artykule, ale to właśnie ona pozwala uniknąć najbardziej nieprzyjemnych niespodzianek.

Oficjalne strony Ubuntu na Serwer OpenSSHServer, dokumentacja systemctlstrony podręcznika sshd I sshd_configoraz dokumentację UFWTo dobre punkty wyjścia, jeśli chcesz udokumentować procedurę serwera.

sudo apt update && sudo apt upgrade