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.

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.