在 Ubuntu 16.04 上启用 sshd 时出错

Sad*_*ven 7 sshd ubuntu systemctl

我刚刚在虚拟机上安装了 Ubuntu Server 16.04,然后安装了 openssh-server。当我尝试启用 sshd 时:

systemctl enable sshd.service
Run Code Online (Sandbox Code Playgroud)

我收到了这条消息:

Failed to execute operation: Too many levels of symbolic links
Run Code Online (Sandbox Code Playgroud)

有谁知道这是什么?我是不是忘记做某事了?

Del*_*tik 10

那是因为服务名称实际上是ssh.service,而不是sshd.service

改为这样做:

systemctl enable ssh.service
Run Code Online (Sandbox Code Playgroud)

解释

安装时openssh-server,该服务会在 systemd 中自动启用。在启用过程中,sshd.service还会创建一个已启用的符号链接。如果您执行systemctl disable ssh.service或 ,此符号链接将消失systemctl disable sshd.service

据报道,您可以看到符号链接是在此处创建的:

root@node51 [~]# systemctl enable ssh.service
Synchronizing state of ssh.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable ssh
Created symlink from /etc/systemd/system/sshd.service to /lib/systemd/system/ssh.service.
Run Code Online (Sandbox Code Playgroud)

由于 systemd 的设计,systemd 不会启用作为符号链接的服务。
在 Red Hat Bugzilla 上讨论

  • @SadSeven:`/etc/systemd/system/sshd.service` 是一个符号链接。SystemD 不会启用作为符号链接的服务。[此处讨论。](https://bugzilla.redhat.com/show_bug.cgi?id=955379) (2认同)