我正在尝试创建一个可以建立多个并发连接的 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