sshd 不允许我启用

sshd 不允许我启用

我想在我的设备上使用 ssh,并且我可以使用 启动 sshd systemctl start sshd,但我希望它在启动时自动启动。问题是,如果我尝试sudo systemctl enable sshd,我会收到以下错误:

Failed to enable unit: File /etc/systemd/system/multi-user.target.wants/sshd.service already exists.

如何解决此问题,以便在启动设备时启动 ssh 服务器?

sudo systemctl status sshd编辑:这是我启动后立即运行时的输出:

○ sshd.service - OpenSSH Daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor preset: disabled)
     Active: inactive (dead)

答案1

 sshd.service - OpenSSH Daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor preset: disabled)
     Active: inactive (dead)

这表示该服务当前已禁用(= 未配置为启动)且未运行。

消息

Failed to enable unit: File /etc/systemd/system/multi-user.target.wants/sshd.service already exists.

表示/etc/systemd/system/multi-user.target.wants/sshd.service已经存在。它不应该在那里,因为根据 ,该服务已被禁用systemctl

中的所有文件都应该是指向已启用服务的/etc/systemd/system/multi-user.target.wants/实际文件的符号链接。*.service由于sshd.service实际上并未启用,这表明这要么是损坏的符号链接,要么是(意外或恶意)放置在其中的其他文件。

您可能应该运行 als -l /etc/systemd/system/multi-user.target.wants/sshd.service来查看它是否是损坏的符号链接,或者是指向其他服务或其他文件的链接。如果它似乎是指向其他有效*.service文件的链接,则可能存在恶意行为,即您的系统可能已被黑客攻击。如果它看起来是一个随机的不相关文件,则可能是作为 root 执行的错误命令的结果。

如果您的系统似乎已被黑客入侵,请参阅:

无论如何,自从/etc/systemd/system/multi-user.target.wants/sshd.service 应该只是一个到真实的符号链接sshd.service,删除它应该是安全的:

sudo rm /etc/systemd/system/multi-user.target.wants/sshd.service

删除错误的链接/文件后重新加载 systemd 配置可能是谨慎的做法,以确保systemd不会因删除而感到困惑:

sudo systemctl daemon-reload

之后,您应该能够sshd.service正常启用:

sudo systemctl enable sshd.service

答案2

在 Arch Linux 中,我认为你必须首先禁用 SSH 套接字。

作为 root 用户,执行以下操作:

systemctl disable sshd.socket
systemctl enable sshd.service

答案3

sudo rm /etc/systemd/system/multi-user.target.wants/sshd.service
sudo systemctl enable sshd

相关内容