【SSH】通过ssh连接bmc之后,正常输入密码,但是不显示交互界面

// 此模板仅供参考,如果不适用可以修改

问题描述

通过ssh输入密码之后,不显示交互界面,等5分钟左右才会显示交互界面

卡在以下日志:

debug1: channel 0: new session [client-session] (inactive timeout: 0)
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Requesting no-more-sessions@openssh.com
debug3: send packet: type 80
debug1: Entering interactive session.
debug1: pledge: filesystem
debug3: client_repledge: enter

过一段时间就会正常显示,这中间到底是什么导致了延迟?

环境信息

openUBMC 25.12 LTS SP1

重现步骤

AC概率出现

期望结果

[您希望实现什么]

实际结果

[实际发生了什么,包含错误信息]

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

HuaKunAT525B2_20260422-1600.tar.gz (8.4 MB)

答案内容由AI生成,仅供参考:

SSH连接BMC后登录延迟问题分析

问题描述

通过SSH连接BMC系统后,输入正确密码并完成身份验证(显示"Authenticated")后,连接过程会在debug1: Entering interactive session.阶段卡住,大约等待5分钟后才能正常显示命令行交互界面。

现象详情

根据提供的SSH调试日志,整个过程如下:

  1. 成功完成密码认证:Authenticated to 192.168.203.150 ([192.168.203.150]:22) using "password".
  2. 进入交互式会话阶段:debug1: Entering interactive session.
  3. 卡顿发生在后续的通道建立和环境设置过程中
  4. 约5分钟后才继续执行并进入正常的shell会话

问题分析

1. 认证已完成但会话建立延迟

从日志中可以看到"Authenticated"消息已经出现,说明SSH协议层面的身份验证已成功。问题出现在认证成功后、实际shell会话启动之前的阶段。

2. 可能的原因分析

BMC系统初始化进程延迟

根据知识库信息,BMC系统在启动或复位后需要一定时间使所有服务完全就绪:

  • 文档DC5引用vyasa的回复:“一般是3分钟左右可以访问” SSH接口
  • Entity 3 Minutes 描述:“3 Minutes is the estimated time frame within which BMC interfaces become responsive after reset”

虽然此处延迟为5分钟,略长于标准的3分钟,但在某些负载较重或资源紧张的场景下可能延长。

客户端环境变量处理

从日志中看到客户端试图发送多个环境变量:

debug3: Sending environment.
debug3: Ignored env SHELL
...
debug1: channel 0: setting env LANG = "C.UTF-8"

如果BMC端对这些环境变量的处理存在阻塞或超时机制,可能导致延迟。

PTY(伪终端)分配延迟

日志中包含:

debug2: PTY allocation request accepted on channel 0

如果BMC系统在分配TTY资源时遇到竞争或需要等待某些服务就绪,也可能导致此阶段延迟。

服务依赖等待

知识库文档DC7提到openUBMC系统采用基于Lua和Skynet的异步框架。这种架构中,某些服务可能存在启动依赖关系,新建立的SSH会话可能需要等待某些后台服务初始化完成才能正常交互。

3. 与已知问题的关联

检查知识库中的类似案例:

  • DC4: “ssh登录BMC概率登录失败”,提到AC长稳测试中ssh登录认证失败
  • DC2: 使用sshpass执行命令失败,但help命令可执行,反映命令执行环境的问题
  • DC7: systemctl status sshd显示Unit sshd.service could not be found,提示SSH服务管理可能存在异常

虽然不完全匹配,但都指向BMC系统中SSH服务的状态管理和依赖关系问题。

解决方案建议

1. 检查服务状态和日志

在能够访问的情况下,检查相关服务状态:

# 查看systemd中SSH相关服务状态
systemctl status sshd
systemctl status bmc_core

# 检查系统日志是否有异常
journalctl -u sshd --since "5 minutes ago"

2. 验证是否为首次连接延迟

尝试在同一会话中退出后重新登录,观察是否仍存在相同延迟。如果是首次连接慢而后恢复正常,则可能是服务按需加载造成的。

3. 优化连接参数

在SSH客户端使用以下选项减少不必要的请求:

ssh -o RequestTTY=yes -o SendEnv=no -o ForwardX11=no Administrator@192.168.203.150

4. 验证系统资源状况

检查BMC系统的CPU、内存使用情况:

top -n 1
df -h

5. 检查配置参数

确认SSH服务配置合理:

  • 检查CLISessionTimeoutMinutes配置值(默认15分钟)
  • 确认SSHPasswordAuthenticationEnabled已启用

推荐排查步骤

  1. 复现问题时收集BMC端日志

    • 收集app.log中对应时间段的日志
    • 特别关注account_mgriam等组件的启动和响应时间
  2. 测试不同连接方式对比

    • 使用ssh -t强制分配TTY测试
    • 使用ssh -o PubkeyAuthentication=no排除密钥认证干扰
  3. 检查系统负载

    • 验证是否在AC长稳测试等高负载场景下更容易出现
  4. 升级固件版本

    • 考虑升级到更新版本的openUBMC固件,因为此类初始化性能问题可能已在后续版本中优化

此问题最可能的原因是BMC系统在认证完成后,shell初始化过程中等待某些必要服务就绪而导致的延迟。建议重点排查系统服务依赖关系和初始化流程。

看现象是登录后自动执行了某个脚本,确认一下是不是以前修改过 ssh 相关配置使得该环境默认ssh登录后执行了调试用的脚本呢。

我们没有修改过ssh配置,而且重启BMC之后就恢复了

日志中有较多ssh登录内容,是每一个都有该问题还是某一次才有该问题?

只要出现问题就是必现的,每一次登录都有问题,我还重新新建了一个用户,也存在该问题

目前怀疑是sshd服务内部处理异常,需要继续深入定位