Amennyiben Linux szerverünk SSSD-n keresztül tagja egy Active Directory tartománynak, lehetőségünk van nem csak a normál jelszó alapú hitelesítésre, hanem kulcs alapúra is úgy, hogy az SSH kulcs az AD címtárban kerül tárolásra, így egy helyen lehetséges azt kezelni.
Ehhez az ssh kulcsot az altSecurityIdentities attribútumban tudjuk eltárolni. Ezután szükséges az SSSD-t úgy beállítani, hogy lekérje a felhasználó attribútumát, és utasítsa az OpenSSH-t, hogy az sss_ssh_authorizedkeys paranccsal keresse meg a felhasználó nyilvános kulcsát.
Megoldás
A cél eléréshez három helyen szükséges beállításokat eszközölni: AD-ban, valamint a Linux szerveren az SSSD és OpenSSH beállításaiban.
Active Directory Server
Engedélyezzük a “Advanced Features” funkciót a “Attribute Editor” eléréséhez
Keressük meg a szerkeszteni kívánt felhasználót, nyissuk meg a tulajdonságát, majd kattintsunk a “Attribute Editor” fülre. Ezen a fülön aztán keressük meg az altSecurityIdentities értéket, és nyissuk meg szerkesztésre, majd ide másoljuk be a felhasználó publikus SSH kulcsát.
SSSD
Az /etc/sssd/sssd.conf állományban a services paraméterhez ssh értéket adjuk hozzá:
services = nss, pam, ssh
Az ldap_user_extra_attrs és az ldap_user_ssh_public_key paraméterek hozzáadása az /etc/sssd/sssd.conf [domain] szakaszához.
[domain/example.com]
ldap_user_extra_attrs = altSecurityIdentities
ldap_user_ssh_public_key = altSecurityIdentities
Törölje az sssd gyorsítótárat és indítsa újra
systemctl stop sssd; rm -rf /var/lib/sss/{db,mc}/*; systemctl start sssd
OpenSSH
Adja hozzá az alábbi SSH paramétereket az /etc/ssh/sshd_config fájlhoz:
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser root
Indítsuk újra az SSH szervert
systemctl restart sshd
Debuggolás
Az Az sss_ssh_authorizedkeys parancs megmutatja a megadott felhasználó publikus SSH kulcsát:
# sss_ssh_authorizedkeys bob
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU3PmPi... bob@example.com