You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL 9.4中SSH环境下pam_prompt()返回PAM_CONV_ERR问题求助

问题分析

自定义MFA PAM模块在RHEL 9.4的SSH环境中调用pam_prompt()返回错误码19(PAM_CONV_ERR),但在UI环境及RHEL 8中正常运行。具体场景为SSH登录时,密码验证完成后模块尝试显示MFA选项列表时触发该错误。

可能原因
  1. RHEL 9 PAM对话机制变更:RHEL 9使用的PAM版本(1.5.1)相比RHEL 8的1.3.1,对SSH环境下的对话处理(pam_conv)有更严格的限制,尤其是在多阶段认证场景中。
  2. SSHD配置限制:RHEL 9默认的sshd配置可能关闭了Challenge-Response认证,或对认证阶段的交互次数有限制。
  3. PAM配置顺序问题:自定义模块放置在PAM配置末尾,可能因之前的模块(如substack password-auth)修改了对话上下文,导致后续pam_prompt()无法正常调用。
  4. use_first_pass参数影响:配置中的use_first_pass会让模块复用之前输入的密码,可能干扰后续的对话交互逻辑。
解决方案

1. 调整SSHD配置

编辑/etc/ssh/sshd_config,确保以下参数设置正确:

ChallengeResponseAuthentication yes
PasswordAuthentication yes
UsePAM yes

修改后重启sshd服务:

systemctl restart sshd

2. 修改PAM配置顺序

将自定义模块从auth段末尾移至substack password-auth之后、include postlogin之前,避免对话上下文被后续模块干扰:

#%PAM-1.0
auth       substack     password-auth
auth       required     pam_otp.so config=/etc/pam_otp.conf
auth       include      postlogin
# 其余配置保持不变

注:移除use_first_pass参数,避免复用密码导致的交互上下文异常

3. 调整PAM模块代码

  • 尝试将PAM_PROMPT_ECHO_ON替换为PAM_PROMPT_ECHO_OFF,测试是否因SSH对话handler不支持回显式提示导致失败:
    int pam_result = pam_prompt(pamh, PAM_PROMPT_ECHO_OFF, &p, "%s", prompt);
    
  • 确保调用pam_prompt()后正确释放内存:
    if (p) {
        pam_free(pamh, p);
        p = NULL;
    }
    
  • 检查PAM上下文有效性,调用pam_prompt()前确认tty资源存在:
    const char *tty;
    if (pam_get_item(pamh, PAM_TTY, (const void **)&tty) != PAM_SUCCESS || !tty) {
        debug(pamh, "[ERROR] No valid TTY available");
        return PAM_CONV_ERR;
    }
    

4. 适配RHEL 9 PAM对话逻辑

RHEL 9中,SSH的PAM对话handler可能要求认证阶段的交互必须在同一个对话序列中完成。可以尝试使用pam_start()重新初始化对话上下文,或使用pam_conv自定义对话handler(如果模块权限允许)。

调试步骤
  1. 启用sshd debug日志,查看详细交互过程:
    sshd -d -p 2222
    
    然后用ssh -p 2222 username@ip登录,观察输出中的PAM交互日志。
  2. 在自定义模块中增加更多调试输出,打印pam_get_item(pamh, PAM_CONV, ...)的返回值,确认对话handler是否正常加载。
  3. 测试在RHEL 9本地登录(如tty)是否触发同样错误,排查是否仅SSH环境下存在问题。

内容的提问来源于stack exchange,提问作者Abhinav Chauhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:45:01