// 此模板仅供参考,如果不适用可以修改
问题描述
先故意输错一次密码
再次输入密码
发现控制台报错
VNC无法再次连接
环境信息
openUBMC 25.12
重现步骤
-
[第一步]
-
[第二步]
-
[第三步]
期望结果
[您希望实现什么]
实际结果
[实际发生了什么,包含错误信息]
尝试过的解决方案
[列出您已经尝试过的解决方案及结果]
分析结论
[详细总结您对此问题的分析结论]
// 此模板仅供参考,如果不适用可以修改
先故意输错一次密码
再次输入密码
发现控制台报错
VNC无法再次连接
openUBMC 25.12
[第一步]
[第二步]
[第三步]
[您希望实现什么]
[实际发生了什么,包含错误信息]
[列出您已经尝试过的解决方案及结果]
[详细总结您对此问题的分析结论]
答案内容由AI生成,仅供参考:
结论:该问题为 前端资源释放缺陷 与 认证状态管理不完善 共同导致的连接异常,建议由前端团队修复 VncH5.js 中的事件监听释放逻辑,并优化认证失败后的连接重置流程。
在使用 openUBMC 系统的 VNC 功能时,若用户首次故意输入错误密码进行连接,随后再次尝试输入正确密码登录,系统会持续报错,无法成功建立 VNC 连接。控制台显示以下错误信息:
Failed when connecting: Security negotiation failed on security result (reason: Authentication failed)
TypeError: o.value.removeAllEventListeners is not a function
此问题在 openUBMC 25.12 版本中可稳定复现。
即使首次密码错误,只要第二次输入正确的 VNC 密码,应能正常建立连接并进入远程桌面会话。
Failed when connecting: Security negotiation failed on security result (reason: Authentication failed)
TypeError: o.value.removeAllEventListeners is not a function
at se (VncH5.ac2129f3.js:1:3847)
at VncH5.ac2129f3.js:1:4742
...
https://<BMC_IP>:6100 并接受安全警告(针对 SSL 相关问题,见搜索结果 #4)。根据知识图谱信息:
bmc.kepler.AccountService.LocalAccountAuthN 中的 VncAuthenticate 方法处理;ReadOnly 权限即可执行,但每次认证失败可能未彻底清理会话上下文。首次认证失败后,BMC 或前端 JavaScript 客户端未正确释放或重置安全协商状态,导致后续认证请求仍携带无效安全上下文,从而引发“Security negotiation failed”。
关键错误:
TypeError: o.value.removeAllEventListeners is not a function
此错误表明前端 VNC H5 客户端(VncH5.ac2129f3.js)尝试调用一个对象的 removeAllEventListeners() 方法,但该对象不存在此方法。
根本原因推测:
尽管本次问题未明确开启 SSL,但知识图谱指出:
BMCSet_VNCSSLEnableState = on 时,仅支持 SSL 加密连接;前端修复(VncH5.js):
removeAllEventListeners 方法存在的判断:if (o.value && typeof o.value.removeAllEventListeners === 'function') {
o.value.removeAllEventListeners();
}
后端认证状态清理优化:
VncAuthenticate 失败时,主动清除关联的会话状态;增强错误提示与恢复机制:
VncAuthenticate 方法权限与调用逻辑 —— 来自 KG 实体及文档 chunk 3;"HTML5 VNC" -> "VNC"。结论:该问题为 前端资源释放缺陷 与 认证状态管理不完善 共同导致的连接异常,建议由前端团队修复
VncH5.js中的事件监听释放逻辑,并优化认证失败后的连接重置流程。