SFTP significa "Protocolo de transferencia de archivos SSH". SFTP es un protocolo de transferencia de archivos que se utiliza para transferir archivos entre dos servidores. De forma predeterminada, SFTP le permite transferir archivos en todos los servidores que tienen habilitado el acceso SSH. Sin embargo, otorgará acceso a la terminal a todos los usuarios y esto no se recomienda por razones de seguridad.
En este tutorial, aprenderemos cómo crear un usuario SFTP sin acceso de shell para que el usuario solo tenga acceso SFTP y no acceso SSH.
Requisitos
- Un nuevo CentOS 8 VPS en la plataforma en la nube de Atlantic.net.
- Una contraseña raíz configurada en su servidor.
Paso 1:crear el servidor en la nube de Atlantic.Net
Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo CentOS 8 como sistema operativo con al menos 1 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.
Una vez que haya iniciado sesión en su servidor CentOS 8, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.
dnf update -y
Paso 2:crear un usuario SFTP
Primero, deberá crear un nuevo usuario con solo acceso de transferencia de archivos. Puede crear un nuevo usuario llamado sftp usando el siguiente comando:
adduser sftp
A continuación, establezca la contraseña para el usuario anterior:
passwd sftp
Proporcione su contraseña deseada y presione enter.
Paso 3:cree una estructura de directorio para transferencias de archivos
A continuación, deberá crear una estructura de directorios para la transferencia de archivos para restringir el acceso SFTP a un directorio.
Puede crear un nuevo directorio con el siguiente comando:
mkdir -p /opt/sftp/public
A continuación, establezca la propiedad del directorio /opt/sftp/ en root:
chown root:root /opt/sftp
A continuación, otorgue los permisos adecuados con el siguiente comando:
chmod 755 /opt/sftp
A continuación, establezca la propiedad del directorio público en el usuario sftp:
chown sftp:sftp /opt/sftp/public
Paso 4:configurar SSH para SFTP
A continuación, deberá configurar SSH para restringir el acceso a un directorio y prohibir el acceso de terminal al usuario de sftp.
Puede hacerlo editando el archivo /etc/ssh/sshd_config:
nano /etc/ssh/sshd_config
Agregue las siguientes líneas al final del archivo:
Match User sftp ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /opt/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio SSH para implementar los cambios:
systemctl restart sshd
Paso 5:verificar SFTP
Ahora, verifique el acceso SFTP con el siguiente comando:
sftp [email protected]
Se le pedirá que proporcione una contraseña como se muestra a continuación:
[email protected]'s password:
Proporcione su contraseña de usuario de sftp y presione Enter. Una vez conectado, debería ver el siguiente resultado:
Connected to your-server-ip. sftp>
A continuación, ejecute el siguiente comando para listar el directorio:
sftp> ls
Debería ver el directorio público en el siguiente resultado:
public sftp>
A continuación, verifique si puede establecer una conexión SSH o no:
ssh [email protected]
Se le pedirá que proporcione una contraseña como se muestra a continuación:
[email protected]'s password:
Proporcione su contraseña de usuario de sftp y presione Enter. Debería ver el siguiente resultado:
This service allows sftp connections only. Connection to your-server-ip closed.
El resultado anterior indica que el usuario de sftp ya no puede acceder al shell del servidor a través de SSH.
Conclusión
¡Felicidades! Configuró correctamente SFTP sin acceso de shell en CentOS 8. También puede usar esta configuración para múltiples usuarios y directorios. ¡Comience hoy con SFTP en un VPS de Atlantic.Net!