![SSH 启动失败-缺少特权分离目录:/var/run/sshd](https://linux22.com/image/1162747/SSH%20%E5%90%AF%E5%8A%A8%E5%A4%B1%E8%B4%A5-%E7%BC%BA%E5%B0%91%E7%89%B9%E6%9D%83%E5%88%86%E7%A6%BB%E7%9B%AE%E5%BD%95%EF%BC%9A%2Fvar%2Frun%2Fsshd%20.png)
我有一个运行 Ubuntu 16.04.5 的 VPS,已经运行了好几年,几乎没有什么问题。然而今天,我发现无法使用 SSH 访问服务器,收到“连接被拒绝”错误。我使用 VPS 主机的串行控制台服务访问了服务器,并将问题追溯到 openssh 服务器无法启动。以下是重新service status
启动后service start
的输出:sshd -t
root@167:/# service ssh status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: failed (Result: start-limit-hit) since Fri 2019-01-18 04:56:42 EST; 24min ago
Process: 983 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=255)
Jan 18 04:56:42 167 systemd[1]: Failed to start OpenBSD Secure Shell server.
Jan 18 04:56:42 167 systemd[1]: ssh.service: Unit entered failed state.
Jan 18 04:56:42 167 systemd[1]: ssh.service: Failed with result 'exit-code'.
Jan 18 04:56:42 167 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Jan 18 04:56:42 167 systemd[1]: Stopped OpenBSD Secure Shell server.
Jan 18 04:56:42 167 systemd[1]: ssh.service: Start request repeated too quickly.
Jan 18 04:56:42 167 systemd[1]: Failed to start OpenBSD Secure Shell server.
Jan 18 04:56:42 167 systemd[1]: ssh.service: Unit entered failed state.
Jan 18 04:56:42 167 systemd[1]: ssh.service: Failed with result 'start-limit-hit'.
root@167:/# service ssh start
Job for ssh.service failed because the control process exited with error code. See "systemctl status ssh.service" and "journalctl -xe" for details.
root@167:/# sshd -t
Missing privilege separation directory: /var/run/sshd
我尝试对此进行一些研究,但似乎没有任何实际的解决方案——只是无休止地循环“我有这个问题”,没有答案,答案已经过时,或者只是普遍无用的信息。
有人知道下一步该怎么做才能排除故障/解决这个问题吗?当我登录运行更新并重新启动服务器时,SSH 最后一次工作是在大约 12 小时前。
更新
已使用此处提供的解决方法 1 解决了问题:https://askubuntu.com/a/1110843/531533
答案1
根据此处报告错误,可以通过将目录创建代码添加到来解决该问题/etc/rc.local
。
例如:
mkdir /var/run/sshd
chmod 0755 /var/run/sshd
我做了一些研究,但仍然无法弄清楚在正常的服务器启动时应该如何创建该目录 - 有几个脚本可以执行/etc
此操作,但它们似乎已被弃用,因为它们与旧的 SysV 启动有关,而且我在 SystemD init 设置中找不到任何可以创建该目录的内容。
[更新]:刚刚注意到@pa4080 的评论,这似乎就是它——该文件存在且包含版本中的/usr/lib/tmpfiles.d/sshd.conf
行。d /var/run/sshd 0755 root root
openssh-server
1:7.2p2-4ubuntu2.6
该tmpfiles.d
目录是服务的一部分systemd-tmpfiles
,并且记录在这里。
这可能是一个更新异常,因为我已经看到相关的错误报告将其讨论为更新失败,并且将 openssh-server 更新到最新版本可能会解决此问题。