我正在运行一个带有 Debian 11 的 VPS。
我注意到,上面systemctl status ssh
说 ssh 守护进程是incative (dead)
。我研究了很长一段时间,发现 ssh 使用一种称为“套接字激活”的东西(https://github.com/clearlinux/distribution/issues/72)。这可能解释了为什么 systemd 监听端口 22:
# lsof -i -P -n | grep LISTEN | grep :22
systemd 1 root 46u IPv6 32257361 0t0 TCP *:22 (LISTEN)
但是,据我了解,当我通过 ssh 连接时,该服务至少应该显示为活动状态,对吗?事实并非如此。
此外,你如何systemctl
不接受任何重新加载请求而只是响应ssh.service is not active, cannot reload.
另外,我该如何停止服务呢?
我最大的问题是,当我运行时,systemctl start ssh
服务启动并标记为active (running)
.但是,当我注销并尝试通过 ssh 重新登录时,它告诉我Connection reset by 46.*.*.* port 22
。
感谢您对理解这一点的任何帮助。
更新:通过 VNC 访问我的 VPS 后,我发现我的 ssh 服务失败,因为没有/run/sshd
目录。# mkdir /run/sshd
解决了这个问题。
答案1
有一个单独的.socket
systemd 单元负责 SSH。看来 SSH 是这样处理的不再推荐并且 sid 中的包已恢复为通常的.service
单元守护程序。
要手动执行此操作,只需.socket
在启用该.service
单元之前禁用/屏蔽该单元即可。