FTP
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 (incluido Internet). FTP se basa en una arquitectura de modelo cliente-servidor que utiliza conexiones de datos y control separadas entre el cliente y el servidor.
FTP siempre ha sido popular para mirar o mover archivos grandes entre sistemas. Los archivos se pueden agregar a un servidor central, luego los usuarios que deseen acceder a ellos pueden acceder a ellos desde allí.
SSH
SFTP tiene como objetivo proporcionar seguridad mejorada con tunelización mediante Secure Shell 2 (SSH2), un protocolo de tunelización seguro. Emula una conexión FTP y proporciona un canal encriptado y compatible con cortafuegos para transferencias de archivos mediante el puerto TCP 22.
SSH ofrece seguridad mejorada al tener toda la sesión de transferencia de archivos, incluidos todos los comandos de control de sesión, completamente encriptada en todo momento mientras solo requiere que se abra un solo puerto en su firewall en lugar de los dos puertos que deben abrirse para las conexiones FTP y SSL.
Como característica adicional, Secure FTP también comprime todos los datos durante la transmisión, lo que puede resultar en transferencias de archivos más rápidas.
Contenido relacionado
- Cómo trabajar con el cliente SFTP en Linux:10 comandos sftp
- Cómo configurar un servidor SFTP en el servidor Debian 11
- 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 configurar un servidor SFTP en CentOS 8/RHEL 8 Server
Puesta en funcionamiento con el servidor SFTP en Ubuntu 20.04
Esta guía lo guiará a través del proceso de instalación y configuración del servidor SFTP en Ubuntu 20.04. Seguiremos estos pasos:
- Instalación del
sftp
yssh
Software en Ubuntu - Crear usuario y grupo SFTP
- Configuración del servicio SSH
- Conectarse al servidor mediante la terminal:línea de comandos de Linux
1. Instalación del software ssh en Ubuntu
Necesitamos que el software proporcione el ssh
y sftp
software de servidor en nuestro Ubuntu
Asegúrese de que su máquina esté actualizada:
sudo apt update
sudo apt upgrade -y
Desde sftp
depende de ssh
, necesitaremos instalar SSH u OpenSSH si ninguno de ellos ya está instalado en su máquina.
Instale ssh
demonio:
sudo apt install ssh
Salida
$ sudo apt install ssh
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libllvm11 libxdamage1
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
ssh
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,084 B of archives.
After this operation, 120 kB of additional disk space will be used.
Get:1 http://ports.ubuntu.com/ubuntu-ports focal-security/main arm64 ssh all 1:8.2p1-4ubuntu0.2 [5,084 B]
Fetched 5,084 B in 0s (26.8 kB/s)
Selecting previously unselected package ssh.
(Reading database ... 104454 files and directories currently installed.)
Preparing to unpack .../ssh_1%3a8.2p1-4ubuntu0.2_all.deb ...
Unpacking ssh (1:8.2p1-4ubuntu0.2) ...
Setting up ssh (1:8.2p1-4ubuntu0.2) ...
2. Creando usuario y grupo SFTP
Necesitamos crear un usuario y un grupo que iniciará sesión en el servidor SFTP.
- Cree un grupo con el nombre que desee. Usaré
sftpgroup1
sudo addgroup sftpgroup1
Salida:
# sudo addgroup sftpgroup1
Adding group 'sftpgroup1' (GID 1002) ...
Done.
- Cree un usuario con el nombre que desee y agréguelo al grupo que creamos. Usaré
sftpuser1
para el usuariosudo useradd -m sftpuser1 -g sftpgroup1
- Agregue una contraseña al nuevo usuario SFTP
sudo passwd sftpuser1
Salida:
# sudo passwd sftpuser1
New password:
Retype new password:
passwd: password updated successfully
- Otorgue al nuevo usuario de SFTP acceso completo a su nuevo directorio de inicio usando este comando:
sudo chmod 700 /home/sftpuser1/
Configuración del servicio SSH
Debe configurar el servicio ssh para aceptar tráfico sftp. Agregue las siguientes configuraciones al archivo de configuración ssh que se encuentra aquí /etc/ssh/sshd_config
:
En su terminal, use este comando para abrir el archivo de configuración con vim:
sudo vim /etc/ssh/sshd_config
Ahora agregue este contenido al final del archivo:
Match group sftpgroup1
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Las configuraciones anteriores están destinadas a permitir que los usuarios del grupo sftpgroup1 (Match group sftpgroup1
) para acceder y utilizar sus directorios de inicio a través de SFTP y evitar cualquier otro acceso SSH normal a esos archivos.
Guarde y cierre el archivo de configuración de SSHD.
reinicie el servicio SSH para aplicar los cambios anteriores.
sudo systemctl restart ssh
4. Conexión al servidor mediante la terminal:línea de comandos de Linux
Puede usar la terminal de línea de comandos para probar su inicio de sesión en SFTP. Esto incluso se puede hacer localmente en el servidor sftp.
Este es el formato del comando de inicio de sesión:
sftp [user]@[host]
Vamos a conectarnos a nuestro servidor. se necesitará su nombre de usuario y contraseña de SFTP.
sftp [email protected]
Salida:
$ sftp [email protected]
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:99KvuL95zO2CQbC8X0Re/Q+cYrJgqQgzpf1leemnjmY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
[email protected]'s password:
Connected to 127.0.0.1.
sftp>
Esto lo iniciará en el servidor. El directorio predeterminado es /home
dir especificado en ChrootDirectory /home
directiva en las configuraciones del servidor ssh.
Comandos básicos de sftp
Verificar versión:
sftp> version
SFTP protocol version 3
sftp>
Mostrar directorio de trabajo remoto
Si necesita verificar el directorio de trabajo actual en el servidor remoto, el pwd
el comando es útil:
sftp> pwd
Remote working directory: /sftpuser1
sftp>
Mostrar el directorio de trabajo de la máquina local
Para mostrar el directorio de trabajo actual del sistema local, use lpwd
comando.
sftp> lpwd
Local working directory: /home/ubuntu
sftp>
El usuario creado solo tendrá acceso a su directorio. Cambiemos a ese directorio con el siguiente comando:
sftp> cd sftpuser1
sftp>
Vaya al directorio de inicio del usuario de SFTP e intente crear un nuevo directorio de la siguiente manera:
sftp> ls
sftpuser1 ubuntu
sftp> cd sftpuser1
sftp> ls
sftp> mkdir datadir
sftp> ls
datadir
Subir archivos
Hacerlo desde local
Cargue archivos a un servidor remoto usando esta sintaxis de comando:
$ sftp {user}@{host}:{remote-path} <<< $'put {local-path}'
Ejemplo:
$ sftp [email protected]:/sftpuser1/ <<< $'put ./citizix.txt'
[email protected]'s password:
Connected to 127.0.0.1.
Changing to: /sftpuser1/
sftp> put ./citizix.txt
Uploading ./citizix.txt to /sftpuser1/citizix.txt
./citizix.txt
Hacerlo desde el servidor sftp
Usa estos comandos:ls
para listar archivos, lls
para la lista local, put
para subir archivos:
sftp>
sftp> pwd
Remote working directory: /sftpuser1/datadir
sftp> ls
sftp> lls
citizix.txt snap tmp
sftp> put citizix.txt
Uploading citizix.txt to /sftpuser1/datadir/citizix.txt
citizix.txt 100% 32 25.8KB/s 00:00
sftp> ls
citizix.txt
sftp>
Para cargar varios archivos de una sola vez, podemos usar mput
comando como en el siguiente ejemplo. Puedes usar mput
con expresión regular como data[23]
para subir data2
, data3
e ignorar data1
. Puede usar cualquier comodín o expresión regular con mput
.
sftp>
sftp> pwd
Remote working directory: /sftpuser1/data
sftp> ls
sftp> lls
data1 data2 data3
sftp> mput data[23]
Uploading data2 to /sftpuser1/data/data2
data2 100% 0 0.0KB/s 00:00
Uploading data3 to /sftpuser1/data/data3
data3 100% 0 0.0KB/s 00:00
sftp> ls
data2 data3
Descargando archivos
Hacerlo desde la máquina local
Para descargar un archivo desde un servidor remoto, use la siguiente sintaxis de comando:
$ sftp {user}@{remote-host}:{remote-file-name} {local-file-name}
Aquí hay una demostración de cómo descargar un archivo en una línea usando sftp:
# sftp [email protected]:/sftpuser1/citizix.txt .
[email protected]'s password:
Connected to 127.0.0.1.
Fetching /sftpuser1/citizix.txt to ./citizix.txt
/sftpuser1/citizix.txt 100% 32 26.7KB/s 00:00
Hacerlo desde el servidor sftp remoto
Descargue un solo archivo del servidor usando get
. Ejemplo descargando data2
sftp>
sftp> ls
data2 data3
sftp> lls
sftp> get data2
Fetching /sftpuser1/data/data2 to data2
sftp> lls
data2
sftp>
Usa mget
para descargar varios archivos como en este ejemplo
sftp>
sftp> ls
data2 data3
sftp> lls
sftp> mget data*
Fetching /sftpuser1/data/data2 to data2
Fetching /sftpuser1/data/data3 to data3
sftp> lls
data2 data3
sftp>
Crear y eliminar directorio
Usa los comandos mkdir
y rmdir
para crear y borrar directorios
sftp>
sftp> ls
sftp> mkdir data
sftp> ls
data
sftp> rmdir data
sftp>
Eliminar archivos
Usa el comando rm
para borrar archivos
sftp> rm data*
Removing /sftpuser1/data/data2
Removing /sftpuser1/data/data3
sftp>
Renombrar archivos
sftp>
sftp> ls
data3
sftp> rename data3 data_original
sftp> ls
data_original
sftp>
Comprobación del uso del sistema de archivos
Muestre estadísticas para el directorio o sistema de archivos actual que contiene 'ruta', use el comando df. Podemos usar el indicador -h para mostrar estadísticas en un formato legible por humanos. Tenga en cuenta que las estadísticas que se muestran son para el sistema de archivos respectivo del servidor SFTP remoto y no para el sistema de archivos de la máquina local.
sftp> df
Size Used Avail (root) %Capacity
29540600 5917856 22103188 23622744 20%
sftp> df -h
Size Used Avail (root) %Capacity
28.2GB 5.6GB 21.1GB 22.5GB 20%
Obtención de ayuda
Para obtener ayuda sobre los comandos y la sintaxis disponibles para SFTP, use '?' o 'ayuda'.
sftp> ?
Salida:
sftp> ?
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp [-h] grp path Change group of file 'path' to 'grp'
chmod [-h] mode path Change permissions of file 'path' to 'mode'
chown [-h] own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-afpR] remote [local] Download file
help Display this help text
lcd path Change local directory to 'path'
lls [ls-options [path]] Display local directory listing
lmkdir path Create local directory
ln [-s] oldpath newpath Link remote file (-s for symlink)
lpwd Print local working directory
ls [-1afhlnrSt] [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put [-afpR] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
reget [-fpR] remote [local] Resume download file
rename oldpath newpath Rename remote file
reput [-fpR] local [remote] Resume upload file
rm path Delete remote file
rmdir path Remove remote directory
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
Consulte la página de manual de sftp para obtener más información.
$ man sftp
Salir de la sesión SFTP
Finalmente, puede salir del sftp usando el bye
, exit
, o exit
:
sftp> exit
$
Conclusión
En esta guía, logramos configurar un servidor sftp y exploramos las operaciones básicas que se pueden realizar en el servidor