Skip to content

[Bug] SSH login logs incorrectly mark normal disconnections as failed login attempts #13501

Description

@KiriRainCat

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

  1. 使用 SSH 登录服务器:
ssh user@server
  1. 正常退出:
exit
  1. 查看 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 版本和发行版。

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions