¿Cómo puedo crear un usuario de SFTP en mi instancia de Lightsail?
Quiero crear un usuario de SFTP en mi instancia de Amazon Lightsail. ¿Cómo puedo hacerlo?
Resolución
Nota: Los siguientes pasos crean un usuario de SFTP que tiene acceso al entorno chroot (jaula chroot) sin acceso SSH. El usuario de SFTP no puede acceder a los directorios fuera del entorno o directorio chroot. Por lo tanto, el directorio chroot se convierte en el directorio raíz del usuario.
1. Cree un grupo para los usuarios de SFTP. El grupo ayuda a administrar muchos usuarios de SFTP diferentes. En este ejemplo, el nombre del grupo es sftp_group. Puede cambiarlo por un nombre de grupo de su elección.
sudo groupadd sftp_group
2. Cree un usuario en la instancia con un directorio de inicio. Este usuario solo realiza tareas SFTP y no tiene un shell de inicio de sesión SSH. En el siguiente ejemplo, sustituya sftp_user por un nombre de usuario de su elección.
sudo useradd -g sftp_group -m -d /home/sftp_user -s /sbin/nologin sftp_user
3. El usuario puede autenticarse de diferentes maneras cuando se conecta al servidor a través de SFTP. En el siguiente ejemplo se utiliza una contraseña y una autenticación basada en claves SSH.
Autenticación de contraseña
Para requerir la autenticación de contraseña, cree una contraseña mediante el siguiente comando:
sudo passwd sftp_user
Autenticación basada en claves SSH
Si utiliza la autenticación basada en claves SSH, debe crear los archivos SSH para el usuario y, a continuación, agregar la clave pública a los archivos. Para ello:
En el directorio principal del usuario, cree una carpeta .ssh y un archivo authorized_keys:
sudo mkdir /home/sftp_user/.ssh sudo touch /home/sftp_user/.ssh/authorized_keys
Agregue la clave pública SSH que quiera usar al archivo /home/sftp_user/.ssh/authorized_keys. Para obtener más información, consulte Configurar SSH para sus instancias de Lightsail basadas en Linux/UNIX.
Ejecute los siguientes comandos para cambiar la propiedad y los permisos del directorio principal del usuario:
sudo chown sftp_user:sftp_group /home/sftp_user/.ssh -R sudo chown root:sftp_group /home/sftp_user/ sudo chmod 755 /home/sftp_user/ sudo chmod 700 /home/sftp_user/.ssh/ sudo chmod 600 /home/sftp_user/.ssh/authorized_keys
En el ejemplo anterior se utiliza el permiso 755 del directorio /home/sftp_user y se cambia la propiedad al usuario raíz. Esto se debe a que el directorio se va a utilizar como directorio chroot. Tenga en cuenta que todos los componentes de la ruta deben ser directorios propiedad de la raíz en los que no pueda escribir ningún otro usuario o grupo.
4. Edite el archivo /etc/ssh/sshd_config de la siguiente manera:
Modifique la línea Subsystem sftp comentando la línea Subsystem sftp /usr/libexec/openssh/sftp-server:
# Subsystem sftp /usr/libexec/openssh/sftp-server
Sustituya la línea anterior por:
Subsystem sftp internal-sftp
Agregue directivas para limitar el acceso de los usuarios de SFTP. Estas directivas deben agregarse al final del archivo:
Match Group sftp_group ChrootDirectory /home/%u ForceCommand internal-sftp
En el ejemplo anterior, la directiva ChrootDirectory se utilizó para especificar el directorio raíz de los usuarios de SFTP (jaula chroot). Match block para el usuario que pertenece a sftp_group utiliza la ruta /home/%u como directorio raíz. Los caracteres %u representan al usuario. Puede cambiar el directorio raíz del usuario.
La directiva ForceCommand internal-sftp fuerza el uso de un servidor SFTP en proceso.
Si utiliza la autenticación con contraseña, busque la directiva PasswordAuthentication en el archivo /etc/ssh/sshd_config y asegúrese de que esté configurada en yes (sí).
5. Cree los directorios chroot que utilizará el usuario. Reemplace el nombre del directorio sftp_user y uploads por los nombres que prefiera.
sudo mkdir /home/sftp_user/uploads
Modifique la propiedad de los archivos:
sudo chown sftp_user:sftp_group /home/sftp_user/uploads
6. Compruebe que los permisos de directorio son los que se muestran en el siguiente ejemplo:
ls -ld /home drwxr-xr-x 3 root root 23 Oct 6 15:17 /home ls -ld /home/sftp_user drwxr-xr-x 3 root sftp_group 21 Oct 6 15:17 /home/sftp_user ls -ld /home/sftp_user/uploads/ drwxr-xr-x 2 sftp_user sftp_group 6 Oct 6 15:17 /home/sftp_user/uploads/
7. Reinicie el servicio sshd:
sudo systemctl restart sshd
8. Conéctese a la instancia a través de sftp:
Autenticación de contraseña
# sftp sftp_user@example.com sftp_user@example.com's password:
Autenticación basada en claves SSH
# sftp -i key.pem sftp_user@example.com

Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 6 meses
- OFICIAL DE AWSActualizada hace 3 meses