Configure sftp para usar contraseña pero ssh no use contraseña

15

¿Es posible configurar un usuario en ubuntu con openssh para que ssh no use autenticación de contraseña pero sí sftp?

Supongo que si cambio /etc/ssh/ssh_configpara tener PasswordAuthentication yesesto, es posible que los usuarios usen contraseñas para iniciar sesión con ssh y sftp.

Editar: Mi propósito aquí es permitir que algunos usuarios usen una contraseña en lugar de un archivo de claves. Pero no quiero que los usuarios de ssh puedan iniciar sesión con una contraseña, quiero que tengan que usar un archivo de claves. Si ayuda, no necesito que los usuarios de sftp puedan iniciar sesión, solo necesitan hacer sftp.

dar
fuente

Respuestas:

26

Según tengo entendido, tiene (al menos para este problema en particular) dos grupos distintos de usuarios, uno que puede iniciar sesión a través de SSH y obtener un shell interactivo (llamemos al grupo ssh) y otro que puede iniciar sesión a través de SFTP y solo obtener un SFTP shell (llamemos al grupo sftp).

Ahora cree los grupos sshy sftpen su sistema con groupadd, coloque los usuarios respectivos en los grupos ( gpasswd -a $USERNAME $GROUPNAME) y agregue las siguientes líneas al final (¡ esto es importante! ) De su sshd_configubicación en /etc/ssh/sshd_config:

Match Group sftp
  PasswordAuthentication yes
  # Further directives for users in the "sftp" group

Match Group ssh
  PasswordAuthentication no
  # Further directives for users in the "ssh" group

Lea sobre la Matchdirectiva en sshd_config (5) y sobre los patrones permitidos en ssh_config (5) .

También tendrá que reiniciar el sshproceso para que esto surta efecto:

sudo /etc/init.d/ssh restart

joschi
fuente
66
Esto no está bien documentado, pero solo se usará una directiva Match; deberías poner la directiva más específica en la parte superior. Si enumera sftp primero, a un usuario que esté en ambos grupos se le permitirá Autenticación de contraseña.
Tobu
¡Gracias! Ya hay un sshgrupo en mis cajas de ubuntu, por lo que realmente solo necesito agregar sftpy poner a los usuarios de sftp en ese grupo. Voy a combinar su respuesta con el uso scponlypara mantener a los usuarios SFTP de iniciar la sesión.
Dar
2
Si PasswordAuthenticationestá configurado para noavanzar, ¿funcionará esto? ¿Lo Match Groupanula para los usuarios de sftp? Porque eso es lo que tengo y no funciona. Puedo ingresar con clave, pero no puedo como usuario de sftp.
alphadogg
0

No, y no veo cómo esto mejoraría la seguridad, entonces, ¿cuál sería el punto?

Authorized_keys puede permitir diferentes comandos para diferentes teclas, si eso es lo que buscas. De lo contrario, tiene la opción de crear varias cuentas y usar acls o sudo.

Tobu
fuente
No estoy tratando de mejorar la seguridad. Estoy tratando de facilitar que algunos usuarios usen una contraseña en lugar de un archivo de claves para acceder a sftp. Sin embargo, no quiero que nadie use una contraseña para acceso ssh.
dar
@dar OK; diferentes cuentas entonces. Si fueran la misma cuenta, alguien que conozca la contraseña sftp podría sobrescribir algún archivo de perfil (.ssh / rc, .profile, .bashrc ...) y obtener los mismos privilegios que alguien que conozca la clave privada.
Tobu
0

Tomando una puñalada en la oscuridad aquí, pero puede encontrar este hilo interesante.

¿Es justo encarcelar a mis usuarios de SFTP a su directorio personal?

Tyler K
fuente
No veo nada allí sobre Autenticación de contraseña, corrígeme si me equivoco.
dar
No, tienes razón. No estaba claro qué quería hacer con SFTP vs SSH. Por el otro comentario, veo que desea que los usuarios usen una contraseña para SFTP pero no para SSH. ¿Por qué?
Tyler K
Porque estos usuarios que necesitan usar sftp encuentran desafiantes los archivos clave, pero entienden cómo escribir contraseñas. Se reduce a un problema de experiencia de usuario para sftp. Pero quiero minimizar el área de superficie de ataque manteniendo las contraseñas fuera de la mezcla ssh.
dar
SFTP funciona abriendo primero un túnel ssh y luego transmitiendo archivos a través de FTP. Realmente no puedes divorciarte de los dos. Supongo que podrías configurar algunas ACL, pero eso realmente no tiene sentido.
Tyler K