jak wyłączyć logowanie SSH hasłem dla niektórych użytkowników?

165

W systemie Linux (Debian Squeeze) chciałbym wyłączyć logowanie SSH przy użyciu hasła do niektórych użytkowników (wybranej grupy lub wszystkich użytkowników oprócz root). Ale nie chcę wyłączać logowania przy użyciu certyfikatu dla nich.

edycja: wielkie dzięki za szczegółową odpowiedź! Z jakiegoś powodu to nie działa na moim serwerze:

Match User !root
PasswordAuthentication no

... ale może być łatwo zastąpiony przez

PasswordAuthentication no
Match User root
PasswordAuthentication yes
Stepan
źródło
Może to z powodu twojego wcięcia?
zero
7
Warto wspomnieć, że te pasujące linie powinny znajdować się na końcu pliku
zidarsk8
1
! root też dla mnie nie działa. Drugie podejście załatwiło sprawę.
natenho
Widziałem przypadki, w których Match User "!root,*"wykonałem pracę.
Roman Hocke

Odpowiedzi:

179

Wypróbuj Matchw sshd_config:

Match User user1,user2,user3,user4
    PasswordAuthentication no

Lub według grupy:

Match Group users
    PasswordAuthentication no

Lub, jak wspomniano w komentarzu, przez negację:

Match User !root
    PasswordAuthentication no

Pamiętaj, że dopasowanie działa „aż do kolejnej linii dopasowania lub końca pliku”. (wcięcie nie jest znaczące)

Cakemox
źródło
4
Wolę Match user !rootw tym przypadku
84104
1
Wspaniale, nie wiedziałem o składni Match. Jedną z sugestii, które chciałbym przedstawić, jest to, że jeśli jest to publiczny serwer, w ogóle nie zezwalam na logowanie roota przez SSH. Prawdopodobnie nie jest to wielka sprawa, jeśli jest to wewnętrzne ..
Safado
4
@SpacemanSpiff Do tego właśnie służą a) silne hasła i b) denyhosts / fail2ban.
ceejayoz
2
@ deed02392 Możesz uznać klucz za naprawdę silne hasło, jeśli chcesz.
ceejayoz
4
Jest o tyle silniejszy, że nie ma go w tym samym parku, o to mi chodziło. Uwierzytelnianie hasłem powinno być również wyłączone dla roota, a klucze dozwolone tylko dla logowania.
deed02392
21

Matchw sshd_configdziała dobrze. Powinieneś użyć, Match allaby zakończyć blok dopasowania, jeśli używasz openssh 6.5p1 lub nowszego. Przykład:

PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all
Trevor Hateley
źródło
Nie działało to dla mnie ...
Dimitrios
3

Można to zrobić na kilka sposobów - po pierwsze, można w sposób zauważalny uruchomić drugiego demona sshd na innym porcie z inną konfiguracją - to trochę włamanie, ale przy odrobinie chroot powinno działać dobrze.

Możesz także zezwolić na uwierzytelnianie hasła, ale zablokuj hasła dla wszystkich użytkowników oprócz jednego. Użytkownicy z zablokowanymi hasłami nadal będą mogli uwierzytelniać się za pomocą kluczy publicznych.

mitchellhislop
źródło
-1

możesz po prostu przejść do pliku / etc / ssh / sshd_config i dodać linię Aby zezwolić -> AllowUsers user1 To Deny ---> DenyUsers user2

możemy zezwolić / zabronić logowania dla określonego zestawu hostów za pomocą plików hosts.allow lub hosts.deny znajdujących się w folderze / etc

Sharan
źródło
-1

Ze względów bezpieczeństwa konieczne może być zablokowanie dostępu niektórych użytkowników SSH do Linux-a.

Edytuj plik sshd_config, lokalizacja będzie czasem inna w zależności od dystrybucji Linuksa, ale zwykle znajduje się w / etc / ssh /.

Otwórz plik, gdy jesteś zalogowany jako root:

# vi /etc/ssh/sshd_config

Wstaw wiersz na końcu pliku konfiguracyjnego: -

DenyUsers username1 username2 username3 username4

Zapisz i uruchom ponownie usługi SSH. Zasadniczo nazwa użytkownika1, nazwa użytkownika2, nazwa użytkownika3 i nazwa użytkownika4 Logowanie SSH jest niedozwolone.

Uruchom poniższe polecenie, aby zrestartować to samo: -

# systemctl restart sshd

Wymóg został spełniony. Proszę wziąć ssh od tych użytkowników, a pojawi się błąd „Odmowa dostępu”

Technologie Everdata
źródło
1
Pytanie dotyczyło wyłączenia logowania hasłem (ale utrzymania logowania przy użyciu uwierzytelniania klucza).
Gerald Schneider