我正在运行一个带有 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
解决了这个问题。
有一个单独的
.socket
systemd 单元负责 SSH。似乎不再推荐以这种方式处理 SSH,并且 sid 中的包已恢复为通常的.service
单元守护程序。要手动执行此操作,只需
.socket
在启用该单元之前禁用/屏蔽该.service
单元。