Quiero permitir que algunos usuarios confiables introduzcan archivos scp en mi servidor (a un usuario específico), pero no quiero darles a estos usuarios un hogar, ni un inicio de sesión ssh.
Tengo problemas para entender la configuración correcta de los usuarios/grupos que tengo que crear para permitir que esto suceda.
Pondré un ejemplo;
Teniendo:
MyUser@MyServer
MyUser
pertenece al grupoMyGroup
- La casa de MyUser será, digamos,
/home/MyUser
SFTPGuy1@OtherBox1
SFTPGuy2@OtherBox2
Me dan el suyo id_dsa.pub
y lo agrego a miauthorized_keys
Supongo que entonces haría en mi servidor algo como
useradd -d /home/MyUser -s /bin/false SFTPGuy1
(y lo mismo para el otro...)
Y para el último, useradd -G MyGroup SFTPGuy1
(luego otra vez, para el otro chico)
Entonces esperaría que los SFTPGuys pudieran sftp -o IdentityFile=id_dsa MyServer
y fueran llevados a la casa de MyUser...
Bueno, este no es el caso... SFTP sigue pidiéndome una contraseña.
¿Alguien podría señalar lo que me estoy perdiendo?
Mil gracias,
F.
[EDITAR:mesaen StackOverflow me preguntó si el archivo Authorized_keys era legible para los otros usuarios (miembros de MyGroup). Es un punto interesante, esta fue mi respuesta:
Bueno, no lo fue (era 700), pero luego cambié los permisos del directorio .ssh y el archivo de autenticación a 750, aunque todavía no tuvo efecto. Supongo que vale la pena mencionar que mi directorio de inicio ( /home/MyUser
) también es legible para el grupo; la mayoría de los directorios son 750 y la carpeta específica donde colocarían los archivos es 770.
Sin embargo, en cuanto al archivo de autenticación, creo que la autenticación la realizaría el usuario local MyServer
, ¿no es así? si es así, no entiendo la necesidad de que otros usuarios lo lean... bueno... solo me pregunto. ]
Respuesta1
Antes de intentar esto, lea hasta el final, por favor.
Puedes hacer lo que quieras creando 2 usuarios, colocándolos en el mismo grupo y dándoles el mismo directorio de inicio. Luego cree el archivo ~/.ssh/authorized_keys en la casa compartida con las claves.
Las cuentas deben tener un shell, así que bloquéelos usermod -L LOGIN
para evitar el inicio de sesión interactivo.
Los permisos en el directorio ~/.ssh deben ser g:rx y ~/.ssh/authorized_keys deben ser g:r--
chmod g+rx ~/.ssh
chmod g+r ~/.ssh/authorized_keys
Esto luego causa problemas a sshd ya que espera que el directorio sea como máximo g:r-- y el archivo sea g:--- aparece el mensaje de error
Authentication refused: bad ownership or modes for file /home/test/.ssh/authorized_keys
Para que este esquema funcione ahora tienes queromper los controles incorporados de sshdeditando
/etc/sshd_config
y configurando StrictModes no
desde el valor predeterminado StrictModes yes
. Reinicie sshd para dar a conocer los cambios.
Debería funcionar como quieras. Desafortunadamente, le quitó la seguridad al sshd y podría realizar cambios en una fecha posterior que dejen su sistema completamente abierto.
Para hacer esto de forma más segura, no realice ninguno de los cambios anteriores.
Cree 2 cuentas de usuario en el mismo grupo y configure sus ~/.ssh/authorised_keys. Cree un enlace desde cada directorio de inicio al lugar donde desea que coloquen las cosas.
ln -s -n /path/to/stuff content
Bloquee los permisos en el directorio de inicio para evitar que los usuarios les escriban.
Evite que las cuentas inicien sesión de forma interactiva
usermod -L LOGIN
Cambie los permisos en /ruta/a/cosas para permitir el acceso al grupo.
Respuesta2
Parece que desea proporcionar acceso a un ID de usuario que actúa como un buzón para archivos. Puede restringir lo que los usuarios pueden hacer en el archivo de claves autorizadas.
Como solo desea que se conecten a esta identificación de usuario en el servidor, puede proporcionarles un archivo .ssh/config que los asigne directamente a la identificación de usuario correcta.
Respuesta3
La respuesta a esta pregunta -¿Cómo puedo crear una cuenta de usuario que solo permita cargas a través de SFTP?- recomienda un paquete llamadosolo- Nunca lo he usado, pero parece que podría hacer lo que quieras.
Respuesta4
inspeccionar los archivos de registro puede ayudar. Ingrese lo siguiente después de un inicio de sesión "incorrecto"
tail -n 50 /var/log/secure
y publicar la salida