有一台 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) 我知道如何在 apache2 中通过 LDAP 对用户进行身份验证:
# put the following in the VirtualHost
<VirtualHost *:443>
ServerAdmin user1@bar.foo.com
DocumentRoot /var/www
<Directory />
AuthType Basic
AuthName "Please provide USERNAME AND PASSWORD"
AuthBasicProvider ldap
Order allow,deny
Allow from all
AuthLDAPURL "ldaps://ehh.foo.com/ou=ehh,o=foo.com?mail"
Require valid-user
Require ldap-attribute emailAddress=someuser@bar.foo.com
Run Code Online (Sandbox Code Playgroud)
Q:但是我们需要使用nginx。我们如何配置 nginx 以通过 LDAP 进行身份验证?
使用 Ubuntu 12.04.5