¿Cómo creo un usuario de SFTP en mi instancia de Lightsail?

4 minutos de lectura
0

Quiero crear un usuario de SFTP en mi instancia de Amazon Lightsail.

Solución

Nota: Los pasos siguientes crean un usuario de SFTP con acceso a un entorno chroot (cárcel de chroot) sin acceso SSH. El usuario de SFTP no puede acceder a los directorios fuera del directorio o entorno chroot. Para este usuario, el directorio chroot es el directorio raíz.

Configure su grupo y usuario de SFTP

  1. Cree un grupo para los usuarios de SFTP con el siguiente comando:

    sudo groupadd sftp_group

    Nota: Sustituya sftp_group por el nombre de su grupo.

  2. Cree un usuario en la instancia con un directorio principal sin acceso al shell de inicio de sesión de SSH. Para ello, ejecute el comando siguiente:

    sudo useradd -g sftp_group -m -d  /home/sftp_user -s /sbin/nologin sftp_user

    Nota: Sustituya sftp_user por su nombre de usuario.

Configure la autenticación de usuario con la autenticación con contraseña o con la autenticación basada en claves SSH

Autenticación de contraseña

Use el siguiente comando para crear una contraseña:

sudo passwd sftp_user

Autenticación basada en claves SSH

  1. Para requerir la autenticación basada en claves SSH, cree una carpeta .ssh en el directorio principal del usuario. A continuación, cree un archivo authorized_keys:

    sudo mkdir /home/sftp_user/.ssh
    sudo touch /home/sftp_user/.ssh/authorized_keys
  2. Agregue la clave pública SSH que desea usar al archivo /home/sftp_user/.ssh/authorized_keys. Para obtener más información, consulte Set up SSH keys for Lightsail.

  3. Para cambiar la propiedad y los permisos del directorio principal del usuario, ejecute los siguientes comandos:

    sudo chown sftp_user:sftp_group /home/sftp_user/.ssh -Rsudo 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

    Nota: El ejemplo anterior usa el permiso 755 en el directorio /home/sftp_user y, a continuación, cambia la propiedad al usuario raíz. Este directorio de usuario se usa como directorio chroot.

Edite el archivo /etc/ssh/sshd_config

  1. En la línea sftp del subsistema, comente la línea sftp /usr/libexec/openssh/sftp-server del subsistema:

    # Subsystem sftp /usr/libexec/openssh/sftp-server
  2. Sustituya la línea anterior por el texto siguiente:

    Subsystem sftp internal-sftp
  3. Para limitar el acceso de los usuarios de SFTP, añada el siguiente texto al final del archivo:

    Match Group sftp_group
    ChrootDirectory /home/%u
    ForceCommand internal-sftp

    En el ejemplo anterior, ChrootDirectory especifica el directorio raíz para los usuarios de SFTP. MatchGroup identifica a los usuarios del sftp_group que utilizan la ruta /home/%u como directorio raíz. Los caracteres %u representan al usuario. ForceCommand internal-sftp fuerza el uso de un servidor SFTP en proceso.

  4. Si utiliza la autenticación con contraseña, defina PasswordAuthentication en el archivo /etc/ssh/sshd_config en yes.

Crear los directorios chroot para el usuario

  1. Para crear un directorio chroot, ejecute lo siguiente:
    sudo mkdir /home/sftp_user/uploads
    Nota: Sustituya el nombre del directorio, sftp_user, y las subidas por el nombre de su directorio.
  2. Modifique la propiedad de los archivos:
    sudo chown sftp_user:sftp_group /home/sftp_user/uploads
    Nota: Sustituya el nombre del directorio, sftp_user, y las subidas por el nombre de su directorio.

Verifique los cambios y reinicie el servicio SSHD

  1. Compruebe que los permisos del directorio son similares a los del ejemplo siguiente:

    ls -ld /homedrwxr-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/
  2. Reinicie el servicio SSHD:

    sudo systemctl restart sshd

Conéctese a la instancia mediante SFTP

Autenticación de contraseña

Ejecute lo siguiente:

# sftp sftp_user@example.com's password:

Autenticación basada en claves SSH

Ejecute lo siguiente:

# sftp -i key.pem sftp_user@example.com
OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año