¿Cómo deshabilitar el inicio de sesión SSH con contraseña para algunos usuarios?

166

En Linux (Debian Squeeze) me gustaría deshabilitar el inicio de sesión SSH con contraseña para algunos usuarios (grupo seleccionado o todos los usuarios excepto root). Pero no quiero deshabilitar el inicio de sesión con el certificado para ellos.

editar: muchas gracias por la respuesta detallada! Por alguna razón, esto no funciona en mi servidor:

Match User !root
PasswordAuthentication no

... pero puede ser reemplazado fácilmente por

PasswordAuthentication no
Match User root
PasswordAuthentication yes
Stepan
fuente
¿Quizás es por tu sangría?
nulo
77
Vale la pena mencionar que esas líneas bajo coincidencia deben estar al final del archivo
zidarsk8
1
! root tampoco me funciona. El segundo enfoque hizo el truco.
natenho
He visto casos donde Match User "!root,*"hizo el trabajo.
Roman Hocke

Respuestas:

181

Probar Matchen sshd_config:

Match User user1,user2,user3,user4
    PasswordAuthentication no

O por grupo:

Match Group users
    PasswordAuthentication no

O, como se menciona en el comentario, por negación:

Match User !root
    PasswordAuthentication no

Tenga en cuenta que la coincidencia es efectiva "hasta que haya otra línea de coincidencia o el final del archivo". (la sangría no es significativa)

Cakemox
fuente
44
prefiero Match user !rootpara este caso
84104
1
Impresionante, no sabía sobre la sintaxis de Match. Sin embargo, una sugerencia que haría es que si este es un servidor público, no permitiría el inicio de sesión raíz a través de SSH. Probablemente no sea un gran problema si es interno ..
Safado
44
@SpacemanSpiff Para eso están las a) contraseñas seguras yb) denyhosts / fail2ban.
ceejayoz
2
@ deed02392 Si lo desea, puede considerar que una clave es una contraseña realmente segura.
ceejayoz
44
Es mucho más fuerte que no está en el mismo estadio de béisbol, ese era mi punto. La autenticación de contraseña también debe deshabilitarse para root y las claves solo deben permitirse para inicios de sesión.
deed02392
22

Matchen sshd_configfunciona bien. Debe usar Match allpara finalizar el bloque de coincidencias si está utilizando openssh 6.5p1 o superior. Ejemplo:

PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all
Trevor Hateley
fuente
No funcionó para mí ...
Dimitrios
"Match all" hizo el truco. Gracias. Sin "Match all", sshd no puede iniciarse.
Vladimir Kondratyev
3

Hay algunas maneras en que puede hacer esto: primero, podría ejecutar un segundo demonio sshd en un puerto diferente con una configuración diferente; es un truco, pero con un poco de trabajo chroot debería funcionar bien.

Además, puede permitir la autenticación de contraseña, pero bloquear las contraseñas para todos los usuarios excepto uno. Los usuarios con contraseñas bloqueadas aún podrán autenticarse con claves públicas.

mitchellhislop
fuente
-1

simplemente puede ir al archivo / etc / ssh / sshd_config y agregar una línea Para permitir -> AllowUsers user1 To Deny ---> DenyUsers user2

podemos permitir / denegar el inicio de sesión para un conjunto particular de hosts utilizando los archivos hosts.allow o hosts.deny ubicados en la carpeta / etc

Sharan
fuente
-1

Debido a alguna razón de seguridad, es posible que deba bloquear el acceso SSH de ciertos usuarios a la caja de Linux.

Edite el archivo sshd_config, la ubicación a veces será diferente según la distribución de Linux, pero generalmente está en / etc / ssh /.

Abra el archivo mientras está conectado como root:

# vi /etc/ssh/sshd_config

Inserte una línea al final del archivo de configuración: -

DenyUsers username1 username2 username3 username4

Guárdelo y reinicie los servicios SSH. Básicamente nombre de usuario1, nombre de usuario2, nombre de usuario3 y nombre de usuario4 El inicio de sesión SSH no está permitido.

Ejecute el siguiente comando para reiniciar lo mismo: -

# systemctl restart sshd

El requisito ha sido hecho. Tome el ssh de esos usuarios y obtendrá el error "Acceso denegado"

Tecnologías Everdata
fuente
1
La pregunta era sobre deshabilitar el inicio de sesión con contraseña (pero mantener el inicio de sesión con autenticación de clave).
Gerald Schneider