W skrócie:
Chciałby być sposobem na uwierzytelnienie klucza SSH przez LDAP.
Problem:
Używamy LDAP (slapd) do usług katalogowych, a ostatnio przeszliśmy na używanie własnego AMI do tworzenia instancji. Powodem, dla którego bit AMI jest ważny, jest to, że idealnie chcielibyśmy móc zalogować się za pomocą SSH za pomocą uwierzytelniania klucza, gdy tylko instancja się uruchomi i nie będziemy musieli czekać na nasze nieco powolne narzędzie do zarządzania konfiguracją, aby uruchomić skrypt, aby dodać poprawne klucze do instancji.
Idealny scenariusz polega na tym, że dodając użytkownika do LDAP, dodajemy również jego klucz i natychmiast mogliby się zalogować.
Uwierzytelnianie za pomocą klucza jest konieczne, ponieważ logowanie za pomocą hasła jest zarówno mniej bezpieczne, jak i uciążliwe.
Przeczytałem to pytanie, które sugeruje, że jest łatka dla OpenSSH o nazwie OpenSSH-lpk, aby to zrobić, ale nie jest to już potrzebne w przypadku serwera OpenSSH> = 6.2
Dodano opcję sshd_config (5) AuthorisedKeysCommand, aby obsługiwać pobieranie kluczy autoryzowanych z polecenia oprócz (lub zamiast) z systemu plików. Komenda jest uruchamiana na koncie określonym w opcji sshd_config (5) AuthorizedKeysCommandUser
Jak skonfigurować OpenSSH i LDAP, aby to zaimplementować?
AuthorizedKeysCommandUser nobody
zamiast rootowania.ldapsearch -u -LLL -o ldif-wrap=no '(&(objectClass=posixAccount)(uid='"$1"'))' 'sshPublicKey' | sed -n 's/^[ \t]*sshPublicKey:[ \t]*\(.*\)/\1/p'
AuthorizedKeysCommandRunAs
i nie maAuthorizedKeysCommandUser
Dla każdego, kto otrzyma błąd podczas uruchamiania ldapsearch:
tak jak ja (na FreeBSD), poprawka polega na zmianie pierwszego polecenia sed na:
(dodanie średnika po „d”).
źródło
Chciałem tylko udostępnić moją „metodę”, moja strona klienta jest specyficzna dla Debiana / Ubuntu, ale moja strona serwera jest zasadniczo taka sama jak powyżej, ale z nieco więcej „HowTo:”
Serwer :
Włącz atrybut klucza publicznego:
Kredyt:
https://blog.shichao.io/2015/04/17/setup_openldap_server_with_openssh_lpk_on_ubuntu.html
Teraz użyj tego, aby dodać ldif:
Dodanie użytkownika z kluczem publicznym SSH w phpLDAPadmin
Najpierw utwórz użytkownika za pomocą szablonu „Ogólne: Konto użytkownika”. Następnie przejdź do sekcji atrybutu „objectClass”, kliknij „dodaj wartość” i wybierz atrybut „ldapPublicKey”. Po przesłaniu wróć do strony edycji użytkownika, kliknij „Dodaj nowy atrybut” w górnej części i wybierz „sshPublicKey”, wklej klucz publiczny do pola tekstowego i na koniec kliknij „Aktualizuj obiekt”.
sshPublicKey Atrybut nie jest wyświetlany - klucz autoryzacji OpenLDAP PHPLDAP SSH
Klient Ubuntu:
Utwórz klucze testowe:
źródło
To nie jest pełna odpowiedź, tylko dodatek do odpowiedzi c4urself . Dodałbym to jako komentarz, ale nie mam wystarczającej reputacji, aby komentować, więc proszę nie głosować!
To jest skrypt, którego używam
AuthorizedKeysCommand
(na podstawie wersji c4urself). Działa niezależnie od tego, czy wartość jest zwracana w kodowaniu base64, czy nie. Może to być szczególnie przydatne, jeśli chcesz przechowywać wiele autoryzowanych kluczy w LDAP - po prostu oddziel klucze znakami nowej linii, podobnie jak w pliku autoryzowanych kluczy.źródło