OpenCloudOS SSH连接执行报错
WebShell SSH登陆OpenCloudOS 9会直接断开。仔细调查后明白了问题点,这里总结下。
WebShell SSH登陆流程
这里WebShell使用的nodejs-ssh2实现终端登录
- ssh connect开启登陆交互Shell
- 登陆成功后,SSH底层连接复用,开启exec命令执行Channel,这里并发执行了4个命令。
报错信息
开启调试日志的话,相关记录如下。
1 | ... |
可以看到,就是直接断开了,因此最后报错会是Unable to exec。
分析
尝试关闭命令执行,或者只保留1个命令执行,发现是OK的。
该机器是1核1G内存,尝试升级机器配置,发现升级到8GB之类的就不报错了。
重装系统到OpenCloudOS 8发现即使是同配置没问题。
OpenCloudOS9的OpenSSH是v9.3,而8的是v8.x,测试其它镜像比如Fefora 40 OpenSSH v9.6是没问题。
因此推断9版存在某种限制,导致开启的终端执行channel过多就会断开,该问题并非是因为OpenSSH 9.x兼容性导致的问题。
查看服务侧OpenSSH版本
1 | ssh -V |
解决办法
- OpenCloudOS 9修复该SSH问题,毕竟其它系统目前没遇到该类问题。
- 在未确定具体限制外,可以关闭或者避免并发执行多命令来解决。
写在最后
虽然目前还没确定OS是哪里限制了,但至少明确了是什么造成的。基于目前了解到的信息,并行执行命令并没有任何错也不该是个问题,但还是别过多了,毕竟MaxSessions之类的也还是会限制下。