the*_*ion 12 users password ssh pam
有一台 SLES 11 机器。用户通过 SSH 和 pubkey 登录(混合,一些用户使用密码,一些用户使用 ssh 密钥)
sshd_config 有:
UsePAM yes
PasswordAuthentication yes
PubkeyAuthentication yes
Run Code Online (Sandbox Code Playgroud)
问题:如果使用公钥登录的用户密码过期,则会提示用户更改密码。
问题:如果用户拥有有效的 SSH 密钥并且密码已过期,我们如何设置 PAM 或 sshd 配置以允许用户登录?-没有弹出“更改密码”。
更新#1:解决方案不能是:“UsePAM no”
SERVER:~ # cat /etc/pam.d/sshd
#%PAM-1.0
auth requisite pam_nologin.so
auth include common-auth
account requisite pam_nologin.so
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session
SERVER:~ #
Run Code Online (Sandbox Code Playgroud)
更新#2:解决办法不能是:将用户密码设置为永不过期
更新#3:
SERVER:/etc/pam.d # cat common-account
#%PAM-1.0
...
account required pam_unix2.so
account required pam_tally.so
SERVER:/etc/pam.d #
Run Code Online (Sandbox Code Playgroud)
Jan*_*der 13
导致密码过期提示的操作顺序如下:
account阶段,它验证帐户是否存在且有效。这account阶段注意到密码已过期,并通知 SSH。auth舞台。然后它设置 SSH 登录会话并运行 PAMsession阶段。所有这些都是 SSH 所做的,我看不到任何 SSH 选项来配置此行为。因此,除非您想构建自定义版本的 SSH 和/或 PAM,否则我看到的唯一选择是阻止 PAM 向 SSH 报告过期密码。如果您这样做,它将完全禁用通过 SSH 进行的过期密码检查,即使用户使用密码通过 SSH 登录。其他(非 SSH)登录方法仍将检查密码过期。
您当前的pam.d/sshd文件有一个account include common-account条目。我认为有一个common-account文件包含对pam_unix.so. 这是检查过期密码的行。
您可能不想接触common-account文件本身,因为它用于其他登录方法。相反,您希望include从pam.d/sshd文件中删除。如果有其他的功能common-account之外pam_unix.so,你可能想要把它们直接进入pam.d/sshd。
最后,请记住,这是对您系统安全性的修改,您不应盲目相信我会为您提供好的建议。如果您不熟悉 PAM,请阅读 PAM 的工作原理。有些地方开始可能是man 7 PAM,man 5 pam.conf和man 8 pam_unix。
小智 6
一个选项被添加到 pam_unix.so(大约 2016 年 2 月),称为 no_pass_expiry(源代码更改在这里或手册页在这里)。基本上,它告诉 pam_unix 如果使用 pam_unix 以外的其他东西进行身份验证,则忽略过期的密码,例如,如果 sshd 执行了身份验证。
因此,如果您的 pam_unix.so 版本包含该选项,您应该能够将 PAM 配置为:
例如,我通过简单地更新 /etc/pam.d/sshd 并将 pam_unix.so no_pass_expiry 添加到帐户和密码类型来配置 RHEL 7 服务器来执行上述操作,例如
account required pam_nologin.so
account sufficient pam_unix.so no_pass_expiry
account include password-auth
password sufficient pam_unix.so no_pass_expiry
password include password-auth
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32778 次 |
| 最近记录: |