sshd 可以配置为在独立运行时支持多个连接吗?

sshd 可以配置为在独立运行时支持多个连接吗?

我正在尝试创建一个可以建立多个并发连接的 SSH 服务器 Docker 映像:

  • 服务器
> sudo /usr/sbin/sshd -Ddp 1234
  • 客户1
> ssh user@server -p 1234
user@server's password:
...
  • 客户2
> ssh user@server -p 1234
ssh: connect to host server port 1234: Connection refused

具有由 systemd 运行的 ssh 服务器守护进程的同一台服务器计算机允许多个连接。

有没有办法配置sshd为独立运行,即。不是使用像 systemd 这样的服务管理器,或者sshd从根本上来说只是为了处理单个连接并且并发性来自于它的管理?如果是这样,如果仅被告知ExecStart=/usr/sbin/sshd -D $SSHD_OPTS(看起来没有SSHD_OPTS在任何地方设置),systemd 会做什么来允许并发连接?

答案1

我认为-d妨碍了。从man 8 sshd:

sshd监听来自客户端的连接。 [...]它为每个传入连接创建一个新的守护进程。 […]

后来[强调我的]:

-d
调试模式。服务器将详细的调试输出发送到标准错误,并且不会将其自身置于后台。服务器也不会分叉并且只会处理一个连接。[…]

我的测试表明sshd -d行为就像你所描述的那样。当我在没有它的情况下运行它时,-d它能够很好地处理多个连接。

答案2

可以使用以下方法通过多个连接调试 sshd。

/usr/sbin/sshd -o LogLevel=DEBUG3 -De

相关内容