SCP transferencia de ficheros segura

Introducción a SCP

Antes de empezar hablar de SCP tenemos que hablar de SSH. Para hacer un breve resumen de ello es un protocolo que nos permite encriptar la comunicación desde principio a fin entre dos sistemas Linux.

Los principales beneficios que obtenemos a través del SSH:

  • Utiliza un algoritmo de encriptación del tipo RSA para generar las claves públicas y privadas, aumentando la seguridad.
  • Protocolos como SCP y SFTP corren a través de SSH por lo tanto hace que la transferencias de fichero sea segura.
  • SSH permite la configuración de siempre logado en el sistema, para poder trabajar sin problemas entre varias máquinas sin que tenga que pedir la contraseña.

Configurando SCP

Antes de empezar a configurar comprobaremos en nuestro sistema si lo tenemos instalado. Para ello:

Sistemas Debian, Ubuntu

dpkg -l | grep scp

Sistemas Redhat, CentOS

rpm -qa | grep scp

Si lo tenemos instalado no tenemos que preocuparnos de ese punto, en el caso de no tenerlo procederemos a su instalación.

Sistemas Debian, Ubuntu

apt-get install scp

Sistemas Redhat, CentOS

yum install scp

Una vez que hemos hecho las comprobaciones primarias procederemos a la configuración de la siguiente manera.

Supongamos que actualmente tenemos dos servidores Linux a los cuales llamaremos «Servidor01.pruebas.es» y «Servidor02.pruebas.es». Queremos que entre estos dos servidores se puedan traspasar ficheros sin que el sistema pida la contraseña. En este caso vamos a suponer que en ambos servidores tenemos creado el usuario Ususcp y usaremos su home para mover los ficheros entre ambos servidores.

Esto se debe ejecutar en los dos servidores: Nos situamos en el home de nuestro usuario (Ususcp) y ejecutamos el siguiente comando.

ssh-keygen -t rsa

Nos solicitará una clave que la vamos a dejar en blanco. Si se le quiere poner clave eso ya es cuestión de vosotros mismos. Creará un directorio por defecto donde guardará la clave pública y la clave privada. Este es un ejemplo de la salida de dicho comando.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/Ususcp/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/Ususcp/.ssh/id_rsa.
Your public key has been saved in /home/Ususcp/.ssh/id_rsa.pub.
The key fingerprint is:
b2:22:b7:fc:76:aa:9b:d8:a9:6a:6d:12:3e:db:24:d3 Ususcp@Servidor01.pruebas.es
The key's randomart image is:

El siguiente paso que haremos será la de copiar la clave pública generada en el Servidor01.pruebas.es en Servidor02.pruebas.es. Dicha clave será copiada en un fichero llamado authorized_keys. Si no existe dicho fichero pues lo creamos.

Aunque se pueda realizar este proceso a mano también existe un comando que podemos usar para copiar dicha clave pública de manera automática. Para ello usaremos el comando ssh-copy-id.

ssh-copy-id -i /home/Ususcp/.ssh/id_rsa.pub Ususcp@Servidor02.pruebas.es

Nos solicitará la contraseña para poder acceder, pero una vez introducida ya tendremos el acceso entre ambas máquinas por el usuario Ususcp.

Servidor01.pruebas.es

cat /home/Ususcp/.ssh/id_rsa.pub

Servidor02.pruebas.es

vim /home/Ususcp/.ssh/authorized_keys

Copiamos el contenido de id_rsa.pub de Servidor01.pruebas.es al final y guardamos el fichero.

Si todo ha ido bien con esto conseguiremos que al copiar un fichero a través de SCP no nos pida contraseña cuando lo hagamos a través del usuario Ususcp. También podemos acceder a través de ese usuario por SSH, ya que como dijimos al principio utiliza dicho protocolo para comunicarse.

Utilizando SCP

A continuación detallamos algunos ejemplos que podemos usar para el copiado de ficheros entre dos servidores. Recordamos que siempre lo haremos con el usuario que hemos creado.

1) Copiando ficheros sueltos, copiara todos los ficheros con extension .txt al destino que hemos establecido.

scp carpeta1/*.txt Ususcp@Servidor02.pruebas.es:/home/Ususcp/PruebaCopias

2) Copia recursiva, copiaremos todos los ficheros y carpetas que haya en carpeta1 al destino que hemos establecido.

scp -r carpeta1/* Ususcp@Servidor02.pruebas.es:/home/Ususcp/CopiasRecursiva

3) Copiando ficheros cuando el puerto es distinto,  si el puerto SSH del servidor destino es distinto debemos especificar dicho puerto.

scp -P2222 carpeta1/* Ususcp@Servidor02.pruebas.es:/home/Ususcp/CopiaOtroPuerto

Existen otras opciones interesantes que podemos ver el uso a través del manual de SCP. Estos son algunos de los casos:

  • Copiar el contenido comprimiendo anteriormente, para ello usamos la opción -C (mayúsculas).
  • Conservar la fecha de creación, última modificación y modos, para ello usamos la opción -p (minúscula).
  • Limitar el ancho de banda en Kbit/s, para ello usamos la opción -l (L minúscula)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *