Skip to content

修复 SSH Keyboard-Interactive 多阶段二次认证适配 - #2024

Open
liuliu128412-lang wants to merge 1 commit into
jumpserver:devfrom
liuliu128412-lang:fix/keyboard-interactive-mfa
Open

修复 SSH Keyboard-Interactive 多阶段二次认证适配#2024
liuliu128412-lang wants to merge 1 commit into
jumpserver:devfrom
liuliu128412-lang:fix/keyboard-interactive-mfa

Conversation

@liuliu128412-lang

Copy link
Copy Markdown

问题背景

部分受 EDR 或 OTP 保护的 SSH 资产通过 Keyboard-Interactive 完成二次认证。Koko 在交互式资产连接过程中未正确处理多阶段认证问题,可能直接返回认证失败,无法向用户显示二次认证输入提示。

修改内容

  • 仅为 Koko 交互式资产会话优先使用 Keyboard-Interactive
  • 保持其他 SSH 调用方原有的 Password 优先顺序
  • 支持多个 Keyboard-Interactive 问题及服务端 echo 标志
  • 自动填写普通密码问题,并向用户显示 OTP、Token 等二次认证问题
  • SSH Key 账号不会把私钥内容作为密码回答
  • 在显示认证问题前停止连接计时输出,修复提示格式和缩进
  • 用户实际输入过二次认证信息的 SSH 客户端不进入连接复用缓存
  • 完善输入异常处理及 Keyboard Mode 状态恢复

兼容性

  • Password-only SSH 服务仍可回退到 Password 认证
  • SSH Key + OTP 场景支持用户输入二次认证信息
  • 普通 Password、SSH Key 登录行为保持不变
  • SFTP、VSCode、端口转发及非交互命令路径保持现有行为

验证

  • git apply --check 通过
  • git diff --check 通过
  • Keyboard-Interactive 辅助逻辑测试通过
  • Linux/AMD64 全仓库构建通过
  • pkg/proxy Linux 测试二进制编译通过
  • pkg/srvconn Linux 测试二进制编译通过
  • Linux/AMD64 环境下 go vet ./... 通过
  • JumpServer v4.10.16 企业版环境完成 Keyboard-Interactive 二次认证场景验证

@sonarqubecloud

Copy link
Copy Markdown

@LeeEirc

LeeEirc commented Jul 29, 2026

Copy link
Copy Markdown
Member

不像是标准的 mfa 实现方式,业务场景有点特殊了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants