Contact Information
No response
1Panel Version
v2.2.4
Problem Description
在 Alibaba Cloud Linux 4(OpenSSH 9.6p1)环境下,1Panel 会将正常 SSH 退出产生的 disconnect 日志误判为失败登录。
例如:
Received disconnect from x.x.x.x port xxxx:11: disconnected by user
其中 SSH_DISCONNECT_BY_APPLICATION (11) 表示客户端主动断开连接,并非认证失败。
该误判会导致 SSH 失败登录记录中出现大量正常退出事件,影响安全日志查看。
Steps to Reproduce
- 使用 SSH 登录服务器:
- 正常退出:
- 查看 1Panel SSH 登录日志。
可以看到正常断开事件被标记为失败登录。
The expected correct result
以下日志:
Received disconnect from x.x.x.x port xxxx:11: disconnected by user
不应被统计为失败登录。
Related log output
### Alibaba Cloud Linux 4
登录:
2026-08-07T14:13:xx.xxxxxx+08:00 localhost sshd[2204243]: Accepted publickey for root from 10.128.128.21 port 54995 ssh2
断开:
2026-08-07T14:13:xx.xxxxxx+08:00 localhost sshd[2204261]: Received disconnect from 10.128.128.21 port 54995:11: disconnected by user
PID:
登录: 2204243
断开: 2204261
认证和断开阶段 PID 不一致。
---
### Debian 13(同版本 1Panel,不会误判)
登录:
2026-08-06T10:44:xx.xxxxxx+08:00 localhost sshd[2235192]: Accepted publickey for root from 10.128.128.21 port 63962 ssh2
断开:
2026-08-06T10:44:xx.xxxxxx+08:00 localhost sshd-session[2234616]: Received disconnect from 10.128.128.21 port 63962:11: disconnected by user
客户端地址和端口保持一致,可以正确关联 SSH 会话。
Additional Information
初步分析问题与 SSH session key 生成逻辑有关。
当前逻辑:
sshd-session 使用 客户端地址:端口 作为 session key;
- 普通
sshd 使用 pid:<PID> 作为 session key。
OpenSSH 9.x 下,认证日志和断开日志可能属于不同 PID:
sshd[2204243]: Accepted publickey ...
sshd[2204261]: Received disconnect ...
导致正常断开事件无法关联到原 SSH 会话,被当作独立事件处理,最终显示为失败登录。
建议:
优先使用:
作为 session key,PID 仅作为 fallback。
这样可以兼容不同 OpenSSH 版本和发行版。
Contact Information
No response
1Panel Version
v2.2.4
Problem Description
在 Alibaba Cloud Linux 4(OpenSSH 9.6p1)环境下,1Panel 会将正常 SSH 退出产生的 disconnect 日志误判为失败登录。
例如:
其中
SSH_DISCONNECT_BY_APPLICATION (11)表示客户端主动断开连接,并非认证失败。该误判会导致 SSH 失败登录记录中出现大量正常退出事件,影响安全日志查看。
Steps to Reproduce
exit可以看到正常断开事件被标记为失败登录。
The expected correct result
以下日志:
不应被统计为失败登录。
Related log output
Additional Information
初步分析问题与 SSH session key 生成逻辑有关。
当前逻辑:
sshd-session使用客户端地址:端口作为 session key;sshd使用pid:<PID>作为 session key。OpenSSH 9.x 下,认证日志和断开日志可能属于不同 PID:
导致正常断开事件无法关联到原 SSH 会话,被当作独立事件处理,最终显示为失败登录。
建议:
优先使用:
作为 session key,PID 仅作为 fallback。
这样可以兼容不同 OpenSSH 版本和发行版。