web-dev-qa-db-ja.com

systemdを介した起動時のsshdの有効化と無効化

openssh-serverをインストールしましたが、ブート時にデフォルトでsshdサービスをオフにしておき、必要に応じてターミナルからのみ開始したい場合があります。

many other questions のアドバイスに基づいて、16.04ディストリビューションを使用してsystemdでブート時のサービスの有効化と無効化を簡単に行う必要があります。

$Sudo systemctl disable sshd.service

それはうまくいくようです。ただし、その後の起動時にサービスを有効にすることはできません。

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

openssh-serverをアンインストールおよび再インストールしても修正されませんが、purgeは修正されます。

sshdで無効にした後、ブート時にsystemdを再度有効にするにはどうすればよいですか?

この混乱した状態でも、service ssh [start | stop] `を介して手動でサービスを開始および停止できることに注意してください。

4
BeeOnRope

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)が正常に有効になります。

10
arryph