El Protocolo de transferencia de archivos es un protocolo de comunicación estándar utilizado para la transferencia de archivos informáticos desde un servidor a un cliente en una red informática.
FTP no es popular hoy en día porque carece de seguridad. Cuando se envía un archivo utilizando este protocolo, los datos, el nombre de usuario y la contraseña se comparten en texto sin formato, lo que significa que un pirata informático puede acceder a esta información con poco o ningún esfuerzo. Para que los datos estén seguros, debe usar una versión actualizada de FTP como SFTP.
SFTP Secure File Transfer Protocol es un protocolo de transferencia de archivos que brinda acceso seguro a una computadora remota para brindar comunicaciones seguras. Aprovecha SSH:Secure Socket Shell y, con frecuencia, también se lo conoce como "Protocolo de transferencia de archivos de Secure Shell".
Contenido relacionado
- Descargar archivos desde el servidor SFTP utilizando un script de python
- Enumere, cargue y descargue archivos desde un servidor SFTP usando golang
- Cómo configurar un servidor SFTP en OpenSUSE Leap 15.3 Server
- Cómo instalar y configurar el servidor sftp en Ubuntu 20.04
- Cómo configurar un servidor SFTP en CentOS 8/RHEL 8 Server
Requisitos
Para seguir esta guía, asegúrese de tener lo siguiente:
- Un servidor Debian 11
- Acceso raíz al servidor o un usuario con acceso raíz
- Acceso a Internet desde el servidor
Tabla de contenido
- Asegurarse de que el servidor esté actualizado
- Asegurarse de que el servicio SSH esté instalado
- Crear usuarios y grupos y agregar los directorios necesarios
- Configuración del servicio ssh
- Verificar que la configuración funcione como se esperaba
1. Asegurarse de que el servidor esté actualizado
Antes de continuar, asegúrese de que su sistema esté actualizado. Use este comando para actualizar los paquetes del sistema y actualizarlos.
sudo apt update
sudo apt upgrade -y
2. Asegurarse de que el servicio SSH esté instalado
Verifique que el ssh esté instalado:
$ sudo apt install -y openssh-server
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
openssh-server is already the newest version (1:8.4p1-5).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Ahora que está instalado, inicie el servicio
sudo systemctl start sshd
Confirmar su estado
$ sudo systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-12-03 10:18:03 UTC; 2 days ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 665 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 682 (sshd)
Tasks: 1 (limit: 4626)
Memory: 6.2M
CPU: 9.132s
CGroup: /system.slice/ssh.service
└─682 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
Dec 05 09:20:46 ip-10-2-40-122 sshd[14717]: Received disconnect from 221.181.185.94 port 47597:11: [preauth]
Dec 05 09:20:46 ip-10-2-40-122 sshd[14717]: Disconnected from authenticating user root 221.181.185.94 port 47597 [preauth]
Dec 05 10:34:30 ip-10-2-40-122 sshd[14797]: Received disconnect from 222.186.30.76 port 23207:11: [preauth]
Dec 05 10:34:30 ip-10-2-40-122 sshd[14797]: Disconnected from authenticating user root 222.186.30.76 port 23207 [preauth]
Dec 05 10:34:41 ip-10-2-40-122 sshd[14799]: Received disconnect from 221.181.185.151 port 18104:11: [preauth]
Dec 05 10:34:41 ip-10-2-40-122 sshd[14799]: Disconnected from authenticating user root 221.181.185.151 port 18104 [preauth]
Dec 05 11:11:54 ip-10-2-40-122 sshd[14830]: Received disconnect from 221.131.165.65 port 19729:11: [preauth]
Dec 05 11:11:54 ip-10-2-40-122 sshd[14830]: Disconnected from authenticating user root 221.131.165.65 port 19729 [preauth]
Dec 05 11:19:03 ip-10-2-40-122 sshd[14840]: Accepted publickey for admin from 105.231.148.146 port 60649 ssh2: RSA SHA256:nDQ1FMciYtGpPYjdOwbUTVg7kQxEFtAjoSdWulRilIA
Dec 05 11:19:03 ip-10-2-40-122 sshd[14840]: pam_unix(sshd:session): session opened for user admin(uid=1000) by (uid=0)
3. Crear usuarios y grupos y agregar los directorios necesarios
A continuación, nos aseguraremos de que los usuarios necesarios estén presentes en el sistema. En mi caso, me gustaría tener a los usuarios de sftp en casa como /srv/sftp
Vamos a crear la casa /srv/sftp
con este comando:
sudo mkdir /srv/sftp
Entonces, creemos un grupo paraguas solo para SFTP
sudo groupadd sftpusers
A continuación, cree un usuario exclusivo de sftp llamado citizix:
sudo useradd -G sftpusers -d /srv/sftp/citizix -s /sbin/nologin citizix
Las opciones anteriores hacen lo siguiente:
-G sftpusers
:Crear usuario, añadir asftpusers
grupo-d /srv/sftp/citizix
:establecer el directorio de inicio como/srv/sftp/citizix
-s /sbin/nologin
:No queremos que el usuario inicie sesión, por lo que no hay shell de inicio de sesión ssh- Finalmente, nombre de usuario como
citizix
Luego agregue la contraseña al usuario creado usando este comando:
$ sudo passwd citizix
New password:
Retype new password:
passwd: password updated successfully
3. Configurando el servicio ssh
Ahora que hemos instalado el software necesario y creado los usuarios y grupos, configuremos ssh.
Asegúrese de que la autenticación de contraseña esté habilitada para ssh. Edite el archivo de configuración aquí /etc/ssh/sshd_config
:
sudo vim /etc/ssh/sshd_config
Luego asegúrese de que esta línea no esté comentada:
PasswordAuthentication yes
A continuación, debemos agregar reglas para los usuarios en sftpusers
grupo para ser considerado como sftp. Edite el archivo de configuración:
sudo vim /etc/ssh/sshd_config
Agregue este contenido al final del archivo:
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /srv/sftp
ForceCommand internal-sftp
Luego reinicie sshd para recargar la configuración:
sudo systemctl restart sshd
Verifica que sshd
se está ejecutando como se esperaba:
$ sudo systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-12-05 11:22:02 UTC; 12s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 15292 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 15293 (sshd)
Tasks: 1 (limit: 4626)
Memory: 1.0M
CPU: 159ms
CGroup: /system.slice/ssh.service
└─15293 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
Dec 05 11:22:02 ip-10-2-40-122 systemd[1]: Starting OpenBSD Secure Shell server...
Dec 05 11:22:02 ip-10-2-40-122 sshd[15293]: Server listening on 0.0.0.0 port 22.
Dec 05 11:22:02 ip-10-2-40-122 sshd[15293]: Server listening on :: port 22.
Dec 05 11:22:02 ip-10-2-40-122 systemd[1]: Started OpenBSD Secure Shell server.
4. Verificar que la configuración funcione como se esperaba
Después de crear correctamente el usuario y agregar configuraciones de sftp, probemos la configuración con el comando:
❯ sftp [email protected]
[email protected]'s password:
Connected to 18.236.122.10.
sftp>
¡Ahora tenemos un servidor sftp funcionando con un usuario configurado!
Los usuarios podrán iniciar sesión en el servidor y acceder a los archivos y directorios ubicados en su directorio de inicio. Si desea otorgar al usuario otros directorios fuera de su propio directorio, solo asegúrese de que el usuario tenga suficientes derechos de acceso. Estos directorios y archivos deben estar dentro del directorio sftp: /srv/sftp
.
Ejemplo:si quiero que el usuario acceda al directorio /srv/sftp/paymentfiles
, haga lo siguiente:
Crear el directorio
sudo mkdir /srv/sftp/paymentfiles
Luego asigne el usuario (citizix
) accede haciéndolos dueños del directorio:
sudo chown citizix:sftpusers /srv/sftp/paymentfiles
Eso es. Los usuarios ahora deberían tener acceso.
Conclusión
Logramos configurar el servidor sftp en un Debian 11 en esta guía.