为什么基于 Alpine 的 sshd 在第一个会话结束时关闭?

为什么基于 Alpine 的 sshd 在第一个会话结束时关闭?

我有一个简单的 Docker 容器有目的的 sshd服务器,其镜像源自alpine:latest。它当前用作/usr/sbin/sshd -D -e -ddd入口点。当我ssh进入它以远程运行某个命令时,该命令执行正常,但随后sshd容器立即关闭。

别处session optional pam_loginuid.so在 中启用了一个名为“SSH 登录修复。否则用户登录后将被踢出”的建议/etc/pam.d/sshd。这听起来很有希望,但 Alpine 的sshd(来自apk add openssh)显然没有 PAM,而且我不确定这将如何运作。

有人可以告诉我如何使sshd基于 Alpine 的容器内部在多个 SSH 会话中持续存在以支持正常运行吗?

更新sshd以下是关闭前日志输出的最后几行:

Received disconnect from 1.2.3.4 port 29213:11: disconnected by user
Disconnected from user rts 1.2.3.4 port 29213
debug1: do_cleanup
debug3: mm_request_receive entering
debug1: do_cleanup

答案1

您之所以看到这种行为,是因为 -d 标志。从 sshd 的手册页

-d' 调试模式。服务器将详细的调试输出发送到系统日志,而不会将其自身置于后台。服务器也不会分叉,并且只处理一个连接。此选项仅用于服务器调试。多个 -d 选项可提高调试级别。最大为 3。

相关内容