目前我注意到,当我使用带有 PAM 和 RADIUS 的 OpenSSH 服务器时,虽然我可以让用户使用 PAM 成功进行身份验证,但我仍然需要在 /etc/passwd 中有一个本地用户帐户,例如在框中使用 useradd 添加。
OpenSSH 中是否有任何设置表明 /etc/passwd 中不需要本地用户。相反,shell/home dir/session 将通过某些默认设置进行初始化?我在网上找不到任何方法可以做到这一点。
答案1
中的配置/etc/nsswitch.conf
设置了查找用户的顺序。您可以检查getent passwd $USER
如何解析用户。用户无需拥有本地帐户即可登录。将passwd
和group
中的数据库绑定/etc/nsswitch.conf
到 ldap、nis 和/或 sss,并使用堆栈中的正确 PAM 模块。
使用案例固态存储系统和免费IPA,其中用户、组、登录 shell、sudo 规则、SELinux 映射等都存储在 freeIPA 管理的目录中。请注意,SSHD 使用 GSSAPI 对 kerberos 进行身份验证,其数据库也存储在目录中:
# cat /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMAIN.COM
dns_lookup_realm = false
dns_lookup_kdc = true
rdns = false
ticket_lifetime = 24h
forwardable = yes
[realms]
DOMAIN.COM = {
kdc = ipaserver.domain.com:88
master_kdc = ipaserver.domain.com:88
admin_server = ipaserver.domain.com:749
default_domain = domain.com
pkinit_anchors = FILE:/etc/ipa/ca.crt
}
[domain_realm]
.crapsteak.org = DOMAIN.COM
crapsteak.org = DOMAIN.COM
[dbmodules]
DOMAIN.COM = {
db_library = ipadb.so
}
# grep sss /etc/nsswitch.conf
passwd: files sss
shadow: files sss
group: files sss
services: files sss
netgroup: files sss
automount: files sss
# cat /etc/sssd/sssd.conf
[domain/domain.com]
cache_credentials = True
krb5_store_password_if_offline = True
ipa_domain = domain.com
id_provider = ipa
auth_provider = ipa
access_provider = ipa
ipa_hostname = somehost.domain.com
chpass_provider = ipa
ipa_server = ipaserver.domain.com
ldap_tls_cacert = /etc/ipa/ca.crt
[sssd]
services = nss, pam, ssh
config_file_version = 2
domains = domain.com
# grep sss /etc/pam.d/{password,system}-auth-ac
/etc/pam.d/password-auth-ac:auth sufficient pam_sss.so use_first_pass
/etc/pam.d/password-auth-ac:account [default=bad success=ok user_unknown=ignore] pam_sss.so
/etc/pam.d/password-auth-ac:password sufficient pam_sss.so use_authtok
/etc/pam.d/password-auth-ac:session optional pam_sss.so
/etc/pam.d/system-auth-ac:auth sufficient pam_sss.so use_first_pass
/etc/pam.d/system-auth-ac:account [default=bad success=ok user_unknown=ignore] pam_sss.so
/etc/pam.d/system-auth-ac:password sufficient pam_sss.so use_authtok
/etc/pam.d/system-auth-ac:session optional pam_sss.so
# grep GSS /etc/ssh/sshd_config
GSSAPICleanupCredentials yes
GSSAPIAuthentication yes