принять изменения в файле 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 в вашем домашнем каталоге без полномочий root.
Крис Когдон

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?
AdamKalisz

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


2

Для Systemd Systems - Ubuntu по умолчанию

sudo systemctl reload sshd.service

или

 sudo systemctl reload sshd

или

 sudo /bin/systemctl reload sshd.service

Для Сисвинит Системс

sudo service sshd reload

или

sudo /etc/init.d/sshd reload

0

Перезагрузка может быть лучшей альтернативой для перезагрузки

sudo service sshd reload

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

Конечно, стоит узнать, как именно называется SSH deamon, как обсуждали другие.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.