1. Introducción a SFTP en Linux
SFTP (Secure File Transfer Protocol) es un protocolo seguro utilizado para transferir archivos entre sistemas mediante una conexión cifrada a través de SSH (Secure Shell). A diferencia de FTP, que transmite los datos y credenciales en texto claro, SFTP cifra toda la sesión, lo que lo hace mucho más seguro.
SFTP viene integrado con el protocolo SSH, por lo que si tienes SSH configurado en un servidor Linux, ya tienes SFTP disponible. En esta guía, aprenderás a configurar y usar SFTP en un entorno Linux, tanto para servidor como para cliente, junto con ejemplos de comandos básicos.
2. Requisitos previos
Antes de comenzar, asegúrate de cumplir con los siguientes requisitos:
- Un servidor Linux con acceso root o privilegios sudo.
- Un cliente Linux que también pueda conectarse al servidor a través de SSH.
- Conexión a Internet para instalar cualquier paquete necesario.
3. Configuración del servidor SFTP en Linux
Paso 1: Instalar el servidor OpenSSH
SFTP es parte del paquete OpenSSH. Si SSH no está instalado en tu servidor, puedes instalarlo de la siguiente manera:
En Debian/Ubuntu:
sudo apt update
sudo apt install openssh-server
En CentOS/RHEL:
sudo yum install openssh-server
Paso 2: Verificar el servicio SSH
Para verificar que el servicio SSH esté activo y ejecutándose, utiliza el siguiente comando:
sudo systemctl status ssh
Si el servicio no está en ejecución, puedes iniciarlo con:
sudo systemctl start ssh
También puedes habilitarlo para que se inicie automáticamente al arrancar el servidor:
sudo systemctl enable ssh
Paso 3: Configurar un entorno restringido para usuarios SFTP
Para mayor seguridad, se puede configurar un chroot jail, lo que restringirá a los usuarios SFTP a su propio directorio y evitará que accedan a otras partes del sistema.
- Editar el archivo de configuración de SSH:Abre el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_config
- Agregar la configuración para SFTP:Añade las siguientes líneas al final del archivo para configurar un entorno chroot para los usuarios SFTP:
Subsystem sftp internal-sftp
Match User <nombre_del_usuario_sftp>
ChrootDirectory /home/<nombre_del_usuario_sftp>
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
Asegúrate de reemplazar<nombre_del_usuario_sftp>
con el nombre del usuario que quieras restringir al uso de SFTP. - Configurar el directorio chroot:El directorio especificado como ChrootDirectory debe pertenecer a root y no debe ser editable por otros usuarios. Ejecuta los siguientes comandos para ajustar los permisos:
sudo mkdir /home/<nombre_del_usuario_sftp>
sudo chown root:root /home/<nombre_del_usuario_sftp>
sudo chmod 755 /home/<nombre_del_usuario_sftp>
Luego, crea un subdirectorio donde el usuario tenga permisos para subir archivos:sudo mkdir /home/<nombre_del_usuario_sftp>/uploads
sudo chown <nombre_del_usuario_sftp>:<grupo> /home/<nombre_del_usuario_sftp>/uploads
Paso 4: Reiniciar el servicio SSH
Después de realizar los cambios en el archivo de configuración, reinicia el servicio SSH:
sudo systemctl restart ssh
4. Gestión de usuarios SFTP
Crear un nuevo usuario para SFTP
Si necesitas crear un usuario solo para acceder a SFTP, usa los siguientes comandos:
- Crear el usuario sin acceso a shell:
sudo adduser <nombre_del_usuario_sftp>
- Cambiar el shell del usuario a
/bin/false
para evitar el acceso SSH completo:sudo usermod -s /bin/false <nombre_del_usuario_sftp>
Ahora este usuario solo tendrá acceso a SFTP y estará restringido al directorio que hayas configurado.
5. Configuración del cliente SFTP en Linux
Para conectarte a un servidor SFTP desde un cliente Linux, simplemente puedes usar el cliente SFTP incorporado en OpenSSH.
Conectarse a un servidor SFTP
- Abrir una terminal.
- Conectar al servidor SFTP con el siguiente comando:
sftp <usuario>@<dirección_ip_servidor>
Por ejemplo:sftp usuario_sftp@192.168.1.100
- Autenticarse: Se te pedirá la contraseña del usuario SFTP. Una vez autenticado, estarás en el entorno SFTP.
6. Comandos básicos de SFTP
SFTP tiene una serie de comandos que te permiten gestionar archivos de manera eficiente. A continuación se presentan algunos de los comandos más comunes que puedes usar una vez que te hayas conectado a un servidor SFTP.
Comandos comunes:
- Listar archivos en el servidor remoto:
ls
- Cambiar de directorio en el servidor remoto:
cd <directorio_remoto>
- Subir un archivo desde el sistema local al servidor remoto:
put <archivo_local>
Ejemplo:put documento.txt
- Subir varios archivos al servidor remoto:
mput *.txt
- Descargar un archivo desde el servidor remoto al sistema local:
get <archivo_remoto>
Ejemplo:get imagen.jpg
- Descargar varios archivos desde el servidor remoto al sistema local:
mget *.jpg
- Crear un directorio en el servidor remoto:
mkdir <nombre_directorio>
- Eliminar un archivo en el servidor remoto:
rm <archivo_remoto>
- Salir de la sesión SFTP:
bye
Ejemplo de una sesión completa de SFTP:
sftp usuario_sftp@192.168.1.100
password: ********
sftp> ls
file1.txt file2.jpg carpeta/
sftp> cd carpeta
sftp> put nuevo_archivo.txt
sftp> get file2.jpg
sftp> mkdir nuevo_directorio
sftp> bye
7. Consejos de seguridad para SFTP
- Deshabilitar acceso SSH para usuarios SFTP: Si quieres que los usuarios solo puedan conectarse mediante SFTP y no SSH, asegúrate de configurar correctamente su shell a
/bin/false
o/usr/sbin/nologin
. - Utilizar claves SSH para mayor seguridad: En lugar de usar contraseñas, puedes habilitar el uso de claves SSH para una autenticación más segura. Para configurarlo:
- Genera un par de claves SSH en el cliente:
ssh-keygen -t rsa
- Copia la clave pública al servidor:
ssh-copy-id <usuario>@<dirección_ip_servidor>
- Configura el servidor para permitir solo autenticación por clave pública: Edita el archivo
/etc/ssh/sshd_config
y asegúrate de que las siguientes líneas estén habilitadas:PubkeyAuthentication yes
PasswordAuthentication no
- Genera un par de claves SSH en el cliente:
- Revisar logs: Los registros de SSH pueden ser revisados para monitorear cualquier actividad sospechosa. Los logs de SSH y SFTP generalmente se encuentran en
/var/log/auth.log
o/var/log/secure
.
8. Conclusión
SFTP es una herramienta poderosa y segura para la transferencia de archivos en entornos Linux. Su integración con SSH garantiza una capa de seguridad robusta para la transmisión de datos, y la configuración es sencilla si ya tienes SSH habilitado en tu servidor. Esta guía te ha mostrado cómo configurar un servidor y cliente SFTP, así como los comandos más comunes para gestionar tus archivos de manera eficiente.