GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar y configurar el servidor sftp en Ubuntu 20.04

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:

  1. Instalación del sftp y ssh Software en Ubuntu
  2. Crear usuario y grupo SFTP
  3. Configuración del servicio SSH
  4. 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 usuario
    sudo 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


Ubuntu
  1. Cómo configurar e instalar Squid Proxy Server en Ubuntu 18.04

  2. Instalar servidor SSH Ubuntu 22.04

  3. Cómo instalar y configurar el servidor DHCP en Ubuntu 20.04

  4. Cómo instalar y configurar Gerbera Media Server en Ubuntu / Debian

  5. Cómo instalar y configurar mysql 8 en Ubuntu 20.04

Cómo instalar OpenSSH en Ubuntu 20.04

Cómo instalar el servidor SSH en Ubuntu 20.04

Cómo instalar el servidor SSH en Ubuntu 18.04 LTS

Cómo instalar el servidor SSH en Ubuntu 20.04 LTS

Cómo instalar el servidor SSH en Ubuntu 22.04 LTS

Cómo instalar el servidor Apache y configurar hosts virtuales en Ubuntu 22.04