ssh跳过一些 PAM鉴权


🧩 什么是 PAM?

PAM(Pluggable Authentication Modules)是 Linux 中一个可插拔的认证框架,它允许系统管理员灵活地配置用户认证机制。

在 SSH 登录过程中,PAM 是其中一个可选的认证机制。如果启用了 PAM,SSH 登录时就会调用 /etc/pam.d/sshd 文件中配置的模块进行一系列检查,比如:

  • 密码复杂度验证
  • 是否允许特定用户或用户组登录
  • 是否启用双因子认证
  • 登录失败次数限制(如 pam_tally2pam_faillock
  • SELinux/安全策略限制等

🛠️ SSH 配置文件中 PAM 相关项

/etc/ssh/sshd_config 中有一项:

1
UsePAM yes

含义如下:

  • yes:SSH 登录会调用 PAM 模块 /etc/pam.d/sshd,应用一系列策略检查。
  • no:不使用 PAM,跳过这些策略,可能只依赖 sshd_config 中的其它登录控制项(如 AllowUsersPasswordAuthentication 等)来决定是否允许登录。

🧨 注意事项

UsePAM 改成 no 虽然能跳过一些 PAM 限制,但也可能造成:

  1. 绕过安全限制,如密码尝试次数限制、防暴力破解等;
  2. 某些登录验证机制失效,如使用 LDAP、指纹识别、MFA 等基于 PAM 的认证方法。

✅ 示例场景

你遇到过一些限制登录的问题,可能就是 PAM 模块(比如 pam_access.so)限制了用户登录。

1
2
# /etc/pam.d/sshd 示例片段
account required pam_access.so

对应的 /etc/security/access.conf 可能配置了:

1
-:testuser:ALL

这样就会拒绝用户 testuser 的 SSH 登录。

若此时你把 UsePAM no,SSH 就不会再执行上面的 pam_access.so 检查了,用户就能绕过登录限制。


🔐 总结

含义
UsePAM yes调用/etc/pam.d/sshd中的模块,执行多种安全检查
UsePAM no不调用 PAM,简单认证流程,登录限制会变少

是否启用 PAM 取决于你对安全性和控制能力的需求。需要安全策略就启用,想简化登录就关闭。

是否需要我帮你审查一下 /etc/pam.d/sshd 里面有哪些模块可能影响登录?