Использование OpenSSH Server без локального пользователя
В настоящее время я заметил, что когда я использую OpenSSH Server с PAM и, например, RADIUS, в то время как я могу заставить пользователя успешно проходить аутентификацию с 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 в стеке.
Сценарий использования SSSD и freeIPA, где пользователи, группы, оболочка входа в систему, правила 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