У меня установлен 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?
Обратите внимание, что даже в этом запутанном состоянии я все же могу вручную запустить и остановить с помощью service ssh [start | stop] `.
Служба 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)
Служба 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)
Служба 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)