在不重启服务器的情况下更改sshd_config文件中的文件


Answers:


39

只需重新启动sshd服务:

sudo service sshd restart

要么:

sudo /etc/init.d/sshd restart

6
如果我使用ssh连接怎么办?
安华2015年

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 '16

3

无需重新启动SSH服务,就可以采用一种更轻松的方式来执行此操作。

来自man sshd

当sshd收到挂断信号SIGHUP时,它会以其名称和启动选项(例如/ usr / sbin / sshd)执行自身,从而重新读取其配置文件。

因此,您可以使用类似以下的命令将SIGHUP发送到SSH服务器进程:

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

pgrep -f "sshd -D"部件将仅返回侦听新连接的sshd守护程序进程的PID,因为每个活动会话中可能还有其他不需要信号的PID。


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方法对于学习者来说是很容易的。
史蒂文·K


2

对于Systemd Systems-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

在幕后,它向HUPsshd守护进程发送信号,几乎与Steven K已经回答的方式相同。不同之处在于,此变体直接使用killproc函数而不是kill命令来以更精确的方式发送信号(以减少将信号发送到错误进程的可能错误)。无需重新启动/停止服务即可重新读取配置。

当然,值得一提的是,正如其他人所讨论的,究竟如何准确地调用SSH守护进程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.