Jak mogę umożliwić użytkownikowi logowanie się przy użyciu kluczy SSH, ale nie przy użyciu hasła?

17

Chciałbym utworzyć użytkownika i nie mam hasła. Ponieważ nie możesz zalogować się za pomocą hasła. Chcę dodać klucze do jego kluczy autoryzowanych za pomocą roota. To jest dla mojego automatycznego systemu tworzenia kopii zapasowych.

Jeff Schaller
źródło

Odpowiedzi:

26

Użycie passwd -djest po prostu błędne , przynajmniej na Fedorze , w dowolnej dystrybucji Linuksa opartej na shadow-utils. Jeśli usuniesz hasło za pomocą passwd -d, oznacza to, że każdy może zalogować się do tego użytkownika (na konsoli lub graficznie) bez podania hasła.

Aby zablokować logowanie przy użyciu uwierzytelniania hasłem, uruchom , który blokuje konto, udostępniając je tylko użytkownikowi root. Blokowanie odbywa się przez przekształcenie zaszyfrowanego hasła w niepoprawny ciąg (przez prefiks zaszyfrowanego ciągu znakiem!).passwd -l username

Każda próba logowania, lokalnie lub zdalnie, spowoduje „nieprawidłowe hasło” , podczas gdy logowanie za pomocą klucza publicznego będzie nadal działać. Konto można następnie odblokować za pomocą .passwd -u username

Jeśli chcesz całkowicie zablokować konto bez usuwania go, edytuj /etc/passwdi ustaw /sbin/nologinlub /bin/falsew ostatnim polu. Spowoduje to „To konto jest obecnie niedostępne”. dla każdej próby logowania.

Zobacz stronę manuala passwd (1).

guido
źródło
@guido: rvs nie zostanie powiadomiony o twojej odpowiedzi. W tym celu musisz dodać komentarz do jego odpowiedzi (zrobiłem to). Pamiętaj, że czytelnicy mogą przeczytać twoją odpowiedź przed nim, powinieneś pisać odpowiedzi, które odpowiadają bezpośrednio na pytanie. Dobra robota za wskazanie tego! Odnosi się do większości dystrybucji Linuksa (tych korzystających z narzędzi cień Linuxa).
Gilles „SO- przestań być zły”
@Gilles: przepraszam, jestem nowy w Stackexchange; zwróciłem na to uwagę tylko trochę, ponieważ przypominało to sugerowanie użytkownikom konfiguracji kont bez hasła, a zostało to zaakceptowane i oznaczone jako przydatne ...
guido
@ guido: Nie martw się, właśnie wyjaśniłem, jak zwiększyć skuteczność twojego ostrzeżenia. W rzeczywistości, w takich ekstremalnych przypadkach, gdy odpowiedź jest niebezpiecznie błędna, wskazane byłoby zaproponowanie edycji z dodaniem ostrzeżenia lub korekty (mam nadzieję, że takich sytuacji nie spotkasz zbyt często na stronie).
Gilles „SO- przestań być zły”
@ guido: Właściwie, na Debianie Squeeze (nie wiem o Lenny czy Etch), które odpowiedzi DZIAŁA. Nie pozwala na zalogowanie się nikomu poza rootem, pozwala na autoryzację kluczy, ale nie jest to hasło mniej, po prostu nie przyjmuje hasła. Byłem zaskoczony, że możesz „usunąć hasło” i że to zadziała w ten sposób. Ale zrobił dokładnie to, czego chciałem i dokładnie to, co robi ta odpowiedź, i była jedyną odpowiedzią, więc właśnie ją zaakceptowałem. Ta odpowiedź jest bardziej sensowna i zaakceptuję ją, ponieważ jestem gotów się założyć, że inne dystrybucje pozwalają każdemu zalogować się bez hasła, w przeciwieństwie do Debiana. W każdym razie dobra odpowiedź.
1
@ acidzombie24, @mattdn: mogliby usunąć nullok z pam.d / password-auth, jeśli debian używa pam (tak myślę, ale nie jestem ekspertem od Debiana). Jednak instrukcja passwd (1) wyjaśnia, że argument -d służy do tworzenia kont bez hasła, więc wszelkie spekulacje specyficzne dla dystrybucji są drugorzędne, ponieważ pytanie było bardzo ogólne.
guido
2

Czy nie pytasz konkretnie o demona SSH, czy nie akceptujesz uwierzytelnienia opartego na haśle, ale uwierzytelnianie za pomocą klucza / hasła?

Poszukaj zmian w sshd_config.

Zestaw

PasswordAuthentication No
PreferredAuthentications publickey,hostbased,keyboard-interactive
Protocol 2,1

Poszukaj więcej parametrów konfiguracyjnych na man ssh_config

Nikhil Mulley
źródło
0

Po prostu nie ustawiaj hasła dla użytkownika. Jeśli istnieje już hasło, usuń je, używając passwd -l <username>.

Ale nadal będzie możliwe zalogowanie się jako ten użytkownik - przy użyciu kluczy autoryzowanych lub przez su lub sudo z konta uprzywilejowanego.

RVS
źródło
1
Jak zauważył guido , passwd -dsprawia , że konto jest bez hasła, ponieważ można zalogować się bez konieczności wpisywania hasła. Użyj, passwd -laby zablokować konto (pomyśl o tym, że daje niemożliwe do wpisania hasło).
Gilles „SO- przestań być zły”
Dodałem ostrzeżenie do twojego postu, ponieważ jest niebezpieczne w obecnej formie. Od ciebie zależy, czy naprawisz odpowiedź, czy ją usuniesz (jeśli uważasz, że guido jest wystarczające), lub odrzuci ostrzeżenie.
Gilles „SO- przestań być zły”
Dlaczego och, dlaczego ludzie akceptują odpowiedź, która nawet nie działa?
mathepic
@mathepic: Działa na Debianie. Dokładnie tak, jak zapytałem
czy jesteś pewien, że użytkownik nieuprzywilejowany nie może tego suzrobić?
mattdm,