¿Cómo puedo bloquear mi propia cuenta desde el inicio de sesión ssh remoto con contraseña?

10

No quiero deshabilitar el inicio de sesión remoto con contraseña por completo, pero quiero hacerlo para que mi cuenta solo sea accesible con la autenticación de par de claves (hay otros usuarios que desean usar contraseñas para iniciar sesión). ¿Es posible cambiar esto por usuario, idealmente sin cambiar la configuración del sistema?

Y para que quede claro, mi cuenta tiene acceso a sudo, por lo que no quiero bloquear la contraseña.

phunehehe
fuente

Respuestas:

9

Puedes usar la opción Match en sshd_config

Match Introduce un bloque condicional. Si se cumplen todos los criterios en la línea de coincidencia, las palabras clave en las siguientes líneas anulan las establecidas en la sección global del archivo de configuración, hasta que aparezca otra línea de coincidencia o el final del archivo. [1]

Entonces, al final de ese archivo , puede especificar:

Match User yourusername
PasswordAuthentication no

Consulte man 5 sshd_configtodas las opciones disponibles.

[1] http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5

jasonwryan
fuente
Esto ya es bueno, pero quiero ver si puedo hacerlo sin editar sshd_config.
phunehehe
2
Dado que desea realizar un cambio en el sistema, es decir, uno que no afecte a otros usuarios, parece poco probable ...
jasonwryan
¿Y qué hay de ~ / .ssh / config? ¿Has intentado incluir la configuración allí?
ttyS0
1
AFAK ~ / .ssh / config para el cliente, no para el servidor.
Adam Byrtek
1

La respuesta de jasonwryan será la forma correcta de hacer este cambio. La única adición que haría es que podría configurar la coincidencia para que se base en el grupo, de modo que cualquier usuario en el grupo de rueda debería usar la autenticación de clave mientras que otros podrían usar contraseñas.

Sé que desea hacer esto sin cambiar los archivos de configuración del sistema, pero hay una buena razón por la cual eso no será posible. En su mente, tiene sentido que su usuario pueda instituir una política de inicio de sesión más segura, pero solo porque en su opinión es una opción más segura no cambia el hecho de que todavía es un cambio en los requisitos de inicio de sesión del sistema para Un usuario remoto.

Para entender por qué esto es un problema, imagine el escenario al revés. El administrador del sistema (que puede cambiar los archivos de configuración del sistema) configura el sistema solo para inicio de sesión basado en claves. Luego, aparece un usuario y solo tiene acceso a su propio archivo de usuario y establece su cuenta para permitir la autenticación de contraseña, anulando la política del sistema. BEEEEEEP . ¡Problema de seguridad!

¿Eso explica por qué el tipo de cambio que desea hacer solo es posible desde el archivo de configuración del sistema?

Caleb
fuente
Es difícil pensar de esa manera, ya que si yo fuera un usuario normal que no sudo, puedo configurar mis claves y luego bloquear la contraseña, haciendo que mi cuenta sea "autenticación de solo clave".
phunehehe
En otro pensamiento, podría bloquear mi contraseña cada vez que esté a punto de cerrar sesión, lo que debería impedir el inicio de sesión con contraseña para mi cuenta. Luego, una vez que inicie sesión con mis claves, podría habilitar la contraseña nuevamente para sudo. Obviamente no es una buena solución, pero me hace pensar que es posible.
phunehehe
1
Solo puede hacerlo porque el administrador del sistema permitió la autenticación de claves y solo está agregando restricciones para usted, sin cambiar nada. Deshabilitar su contraseña solo la establece en un valor no válido, no cambia qué autenticación permite el demonio del sistema.
Caleb
"agregar restricciones para ti, no cambiar nada", es exactamente lo que quiero hacer.
phunehehe
@Caleb: No habría ningún problema de seguridad al permitir authorized_keysponer más restricciones, como phunehehe quiere. Por ejemplo, authorized_keyspuede restringir ciertas teclas a ciertos comandos.
Gilles 'SO- deja de ser malvado'
0

Agregar restricciones para usted, no cambiar nada

¿Por qué no en el lado del cliente, si es seguro que ssh sería el cliente que se utilizará para los intentos de inicio de sesión? En caso afirmativo, intente realizar cambios en ssh_config en lugar de sshd_config. Verifique el parámetro 'PasswordAuthentication No' y PreferredAuthentication

Nikhil Mulley
fuente