En muchas ocasiones nos surge la necesidad de copiar archivos de nuestro equipo hacia un servidor remoto al cual estamos conectados mediante SSH. Y también en sentido contrario, es decir, descargarlos.
Esto podemos hacerlo de muchas maneras: mediante FTP, Samba, etc., pero en esta ocasión vamos a ver cómo hacerlo mediante SSH; más en concreto mediante SCP.
SCP es un comando que nos permitirá subir y descargar archivos de un servidor remoto estableciendo una conexión segura.
En linux las utilidades SSH y SCP ya suelen venir instaladas por defecto. Si no es tu caso vamos a ver rápidamente cómo intalarlas.
Contenidos
Instalación
Instalación en el PC cliente
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openssh-client
Instalación en el servidor
sudo apt-get update
sudo apt-get upgrade
sudo apt install openssh-server
Habilitar el servicio
sudo systemctl enable ssh
SSH por defecto trabaja con el puerto 22. Si tienes el firewall activado y te está bloqueando la conexión, puedes abrir dicho puerto con el siguiente comando.
sudo ufw allow ssh
Descargar archivos del servidor
scp -r -P 5864 devseo@AAA.BBB.CCC.DDD:/home/devseo ./
-r
: indica que copiaremos un directorio de forma recursiva. Es decir los archivos que contiene y todas sus carpetas. En el ejemplo anterior estamos copiando desde el servidor el directoriodevseo
.-P
: con este parámetro especificamos el puerto en el caso que estemos usando un puerto diferente al de por defecto.devseo@AA.BBB.CCC.DDD
: indicamos el usuario con el que nos conectamos (devseo
) y la IP del servidor (AA.BBB.CCC.DDD
)../
: indica el directorio de nuestra máquina local donde se copiarán los archivos. En este caso hace referencia al directorio actual desde el cual estamos ejecutando el comando.
Subir archivos al servidor
El comando para copiar archivos al servidor es el mismo que para descargar, pero cambiaremos el orden, indicando en primer lugar la carpeta de nuestro equipo local a copiar y a continuación el directorio de destino en el servidor.
scp -r ./ devseo@AAA.BBB.CCC.DDD:/home/devseo
Aquí un ejemplo de cómo copiar la clave pública desde un equipo cliente con Windows a un servidor Ubuntu. Podemos especificar el puerto con -P
(por defecto es el 22).
scp -r -P 5759 c:/users/usuario/.ssh/id_rsa.pub root@192.0.2.123:~/.ssh/authorized_keys