通过 systemd 在启动时启用和禁用 sshd

通过 systemd 在启动时启用和禁用 sshd

我已经openssh-server安装了,但有时我想sshd在启动时默认关闭该服务,而仅在需要时从终端启动它。

根据建议许多其他问题systemd在我使用的 16.04 发行版中,在启动时启用和禁用服务应该很简单:

$sudo systemctl disable sshd.service

这似乎有效。但是,此后我无法再在启动时启用该服务:

$sudo systemctl enable sshd.service 
Failed to execute operation: No such file or directory

即使卸载并重新安装也openssh-server无法解决问题,但是purge可以。

sshd一旦我通过 禁用它,如何在启动时重新启用它systemd

请注意,即使在这种混乱的状态下,我仍然可以通过 [start|stop] 手动启动和停止服务service ssh

答案1

sshd 服务原本写为 ssh.service,sshd.service 被设置为别名。查看以下输出的最后一行。

arryph@localhost:~$ systemctl cat sshd.service 
# /lib/systemd/system/ssh.service
[Unit]
Description=OpenBSD Secure Shell server
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify

[Install]
WantedBy=multi-user.target
Alias=sshd.service

因此,当ssh.service启用时,我们可以将其称为sshd.service。但是当您禁用sshd.service并重新启动时,ssh.service不再加载,因此您无法sshd.service在该条件下将其称为 。您必须将其称为ssh.service。因此,如果您运行sudo systemctl enable ssh.service,它将成功启用ssh.service(别名为sshd.service)。

相关内容