приймати зміни у файлі sshd_config без перезавантаження сервера


33

Я змінив конфігурацію у файлі

/etc/ssh/sshd_config

але отримав ефект лише після перезавантаження сервера. Як прийняти зміни без перезавантаження сервера?


Ви можете використовувати sudo service ssh restartдля перезапуску послуги, щоб набути чинності. Але пам’ятайте, що якщо ви підключені через SSH, ваш сеанс буде припинено.
AzkerM

Відповіді:


39

Просто перезапустіть службу sshd:

sudo service sshd restart

або:

sudo /etc/init.d/sshd restart

6
Що робити, якщо я перебуваю на ssh-з'єднанні?
Анвар

7
нічого ... підстрибуючий sshd досить розумний, щоб дозволити існуючим ssh-з'єднанням весело продовжуватись невдалим
Скотт Стенсленд

4
Не рекомендую нічого запускати в /etc/init.d безпосередньо. Використовуйте команду "service". Більшість сервісів не хвилюватиметься, але їх є кілька, тому що на них впливають змінні середовища. "сервіс" забезпечує очищення навколишнього середовища. Наприклад, запуск "sudo" залишає змінну середовища HOME у домашній директорії без коренів.
Кріс Когдон

5
sudo service ssh restart

не зробить цього. Вам потрібно перезапустити sshd, а не ssh:

sudo service sshd restart

3
Залежить від конфігурації системи. У Lubuntu 14.04 sudo service ssh restartпрацює чудово, тоді як sudo service sshd restartзвіти "sshd: нерозпізнаний сервіс". Не впевнений, чому це змінюється, хоча ...
schulwitz

3

Є ще менш нав'язливий спосіб зробити це, не перезапускаючи службу SSH.

Від man sshd:

sshd читає свій файл конфігурації, коли отримує сигнал зависання, SIGHUP, виконуючи себе з іменем та параметрами, з яких він був запущений, наприклад / usr / sbin / sshd.

Таким чином, ви можете використовувати таку команду, як наведена нижче, для надсилання SIGHUP на процес сервера SSH:

sudo kill -SIGHUP $(pgrep -f "sshd -D")

pgrep -f "sshd -D"Частина буде повертати тільки PID процесу демона Sshd , який прослуховує нові сполуки, так як , ймовірно, будуть інші ИДП для кожного активного сеансу , який не потрібен сигнал.


2
Це найбезпечніший ( stribika.github.io/2015/01/04/secure-secure-shell.html ) спосіб перезавантажити конфігурацію: "Будьте надзвичайно обережні при налаштуванні SSH на віддаленому хості. Завжди тримайте активний сеанс, ніколи перезапустити sshd. Натомість ви можете надіслати сигнал SIGHUP для перезавантаження конфігурації, не вбиваючи сеанс. Ви можете бути ще обережнішими, запустивши новий екземпляр sshd на іншому порту і перевіривши це. "
Адріано Лукас

Чи є якась змістовна різниця sudo pkill -HUP sshd?
АдамКаліш

@Adam Ви хочете HUP лише слухати, а не активних клієнтів, які також є sshdпроцесами. sudo pkill -HUP -f "sshd -D"є заманливою альтернативою, але тоді pkill передає сигнал своєму власному sudoбатькові, оскільки його повний командний рядок відповідає його власній схемі пошуку. Ви можете придумати шаблон, який не відповідає собі подібного ... -f "sshd -[D], але це трохи заплутує речі. Я думаю, що метод pgrep учням простіше обернути голову.
Стівен К

2

Як коренева перевірка

service --status-all | grep ssh

Я не мав sshdсервісу, але мав sshсервіс на сервері Ubuntu. Потім

service ssh restart

2

Для системних систем - за замовчуванням Ubuntu

sudo systemctl reload sshd.service

або

 sudo systemctl reload sshd

або

 sudo /bin/systemctl reload sshd.service

Для систем Sysvinit

sudo service sshd reload

або

sudo /etc/init.d/sshd reload

0

Перезавантаження може бути кращою альтернативою для перезавантаження

sudo service sshd reload

під капотом він посилає HUPсигнал процес демона Sshd майже так само , як Стівен K вже відповіли . Різниця полягає в тому, що цей варіант використовує killprocфункцію замість killкоманди безпосередньо для того, щоб передавати сигнал ще більш точним способом (щоб зменшити можливі помилки передачі сигналів неправильним процесам). Конфігурація перечитується без перезавантаження / зупинки послуги.

Звичайно, варто з'ясувати, як саме називається SSH-димон, як обговорювали інші.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.