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

Linux系统PAM模块pam_echo消息重复打印问题求助

PAM pam_echo模块消息重复打印问题排查与解决

问题现象

在Linux系统中配置PAM实现SSH登录认证时,使用pam_echo模块打印的消息会重复显示:

  • 常规ssh dummy@<host>登录时,每条pam_echo消息会在控制台打印两次
  • 若先输入错误密码再输入正确密码,消息会打印三次
  • 使用ssh -q dummy@<host>(抑制非错误消息)时,每条消息仅显示一次,符合预期

PAM配置详情

auth     required       pam_echo.so test1
auth     required       pam_unix.so
auth     required       pam_echo.so test
account  optional       pam_echo.so test_account
account  sufficient     pam_unix.so
password required       pam_unix.so
session  required       pam_unix.so
# to prevent to not run systemd --user for root, use trick
session  sufficient     pam_succeed_if.so  uid = 0
session  required       pam_systemd.so

预期输出

dummy@<host>'s password:
test1
test
test_account
[dummy@localhost /home/dummy]
#

实际输出

dummy@<host>'s password:
test1
test
test_account
test1
test
test_account
[dummy@localhost /home/dummy]
#

问题原因

  1. pam_echo的输出流特性:默认情况下,pam_echo模块会将消息同时输出到**标准输出(stdout)和标准错误(stderr)**两个流
  2. SSH客户端的流转发:普通SSH登录时,sshd会将stdout和stderr的内容都转发给客户端,导致同一消息被两次显示
  3. ssh -q的作用:-q参数会抑制客户端的非错误stdout输出,此时仅stderr的消息会被显示,因此只出现一次
  4. 错误密码触发重复认证:输入错误密码时,PAM的auth阶段会重新执行一次,导致消息次数叠加

解决方法

修改pam_echo的配置,添加err选项,强制模块仅将消息输出到stderr,避免双流重复:

修改后的PAM配置片段:

auth     required       pam_echo.so err test1
auth     required       pam_unix.so
auth     required       pam_echo.so err test
account  optional       pam_echo.so err test_account
# 其余配置保持不变

修改完成后,重新使用ssh dummy@<host>登录,每条pam_echo消息将仅显示一次,符合预期。


内容的提问来源于stack exchange,提问作者Arjun Manidheer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:22:53