Solución 1:
Prueba Match
en 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 otra línea de coincidencia o hasta el final del archivo". (la sangría no es significativa)
Solución 2:
Match
en sshd_config
funciona bien. Deberías usar Match all
para finalizar el bloque de coincidencia si está utilizando openssh 6.5p1 o superior. Ejemplo:
PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all
Solución 3:
Hay algunas maneras de hacer esto:primero, posiblemente podría ejecutar un segundo demonio sshd en un puerto diferente con una configuración diferente; es un poco complicado, pero con un poco de trabajo de chroot debería funcionar bien.
Además, puede permitir la autenticación de contraseñas, pero bloquear las contraseñas para todos menos para un usuario. Los usuarios con contraseñas bloqueadas aún podrán autenticarse con claves públicas.