SCP (Secure Copy Protocol o Protocolo de Copia Segura) es un método para transferir archivos informáticos de forma segura entre un host local y uno remoto, o entre dos remotos. Se basa en el protocolo Secure Shell (SSH).
En otras palabras, los servidores SCP -que constituyen una herramienta muy útil para los administradores de sistemas- ayudan a traspasar archivos desde y hacia servidores, computadoras y otros dispositivos de la red utilizando un túnel seguro SSH.
FTP (File Transfer Protocol - Protocolos de Transferencia de Archivos) y SCP son protocolos de transferencia de archivos, pero tienen algunas diferencias.
El primero establece una conexión de doble puerto, lo cual significa que es rápido y cómodo, aunque carece de seguridad.
El segundo, en tanto, se ejecuta en una red SSH (Secure Shell), por lo que resulta más seguro. Sin embargo, se limita a una única red cerrada y funciona para una sola transferencia de archivos en el momento.
En las próximas líneas seguimos profundizando sobre qué es SCP, cómo usarlo y algunos ejemplos prácticos. Si bien nos ponemos más técnicos, el proceso es bastante sencillo.
Definición de SCP
SCP es un comando nativo de la mayoría de los sistemas operativos, como macOS, Windows o Linux, al que se accede escribiendo el comando “scp” en la computadora.
En el caso de Windows, es ideal instalar una aplicación de transferencia como PuTTy.
Entonces, el cliente SCP puede subir los archivos al servidor SSH o solicitar su descarga así como la de los directorios.
Cómo usar el Secure Copy Protocol desde una ubicación remota
El Secure Copy Protocol también se utiliza a distancia si se especifica un host remoto como origen y destino. Así, es posible transferir un archivo de un directorio a otro que esté en el mismo servidor.
El comando SCP es el siguiente:
scp xuser@thishost.com:/main/someuser/dira/file.txt xuser@thishost.com:/main/someuser/dirb
Otra alternativa de uso de SCP es cuando se transfiere un archivo de un host a otro.
Puertos SCP
SCP se ejecuta sobre el puerto TCP 22 por defecto, que es también el mismo puerto por defecto para SSH. Pero algunos administradores de sistemas eligen cambiarlo por razones de seguridad.
Para elegir otro, al utilizar el comando SCP es necesario tipear -P seguido del número de puerto seleccionado:
scp -P <Port> <User>@<IP/Host>:<File> <DestinationDirectory>
¿Cómo descargar o cargar archivos utilizando SCP en un puerto diferente?
Si se desea cambiar el puerto por defecto, el usuario debe escribir el nuevo. Por ejemplo, 80, después de -P: por lo que sería “scp -P 80” y el resto del comando.
El indicador -P también es necesario para cargar archivos con SCP en un puerto diferente. Por lo tanto, al subir archivos, el directorio de destino tiene que colocarse al final del comando.
¿Cómo descargar o cargar directorios utilizando SCP en un puerto diferente?
La sintaxis es muy similar cuando se descargan directorios, sólo que hay que añadir el indicador -r al -P. Entonces, escribir “scp -rP 80” y el resto del comando.
Así, es necesario agregar -r para subir directorios usando SCP con un puerto diferente, tal y como se requiere cuando se suben archivos.
¿Cómo modificar el puerto SSH remoto?
Para cambiar el puerto SSH por defecto, hay que editar el archivo de configuración SSH. Para hacerlo en Linux, se debe ejecutar el siguiente comando:
sudo nano /etc/ssh/sshd_config
A continuación, buscar la línea que contiene “Port 22” y modificarla por el número de puerto que se quiere utilizar con SCP. Una vez guardados los cambios, es necesario reiniciar el servicio SSH ejecutando el siguiente comando:
sudo systemctl restart ssh
La sintaxis del comando SCP
La sintaxis básica del comando SCP es la siguiente:
scp [OPTION] [user@]HOST_REC:]file1 [user@]DEST_HOST:]file2
OPTION - SCP incluye la configuración SSH, el puerto SSH, el límite y la copia recursiva, entre otras cuestiones.
- [user@]SRC_HOST:]file1: se refiere al archivo de origen.
- [user@]DEST_HOST:]file2: se refiere al archivo de destino.
Los archivos locales tienen que especificarse utilizando una ruta absoluta o relativa, mientras que los nombres de los archivos remotos deben incluir una especificación del usuario y el host.
El comando SCP requiere una clave o contraseña SSH para autenticarse en los sistemas remotos.
Los dos puntos (:) representan la forma en que SCP distingue entre ubicaciones locales y remotas.
Esta es una captura de pantalla del comando SCP en Windows:
Opciones y su significado
- -1: fuerza a scp a utilizar el protocolo 1. Se trata de un protocolo más antiguo.
- -2: fuerza a scp a usar el protocolo 2. También es más viejo.
- -3: las copias entre dos hosts remotos se transfieren a través del host local. Sin esta opción, los datos se copian directamente entre los dos hosts remotos.
- -4: obliga a scp a utilizar sólo direcciones IPv4.
- -6: obliga a scp a usar sólo direcciones IPv6.
- -B: utiliza el modo por lotes. SCP no puede autenticar la sesión pidiendo al usuario que introduzca una contraseña. Esto significa que se requiere un método de autenticación no interactivo.
- -C: esta opción habilita la compresión, que pasa el indicador -C a ssh.
- [-c cipher]: esta alternativa utiliza el cifrado para encriptar la transferencia de datos.
- [-F ssh_config]: especifica un archivo de configuración alternativo por usuario para ssh. Esta opción se pasa directamente a ssh.
- [-i dentity_file]: elige el archivo que ofrece la clave para la autenticación RSA.
- [-I limit]: permite determinar el ancho de banda.
- [-o ssh_option]: se puede utilizar para pasar opciones a ssh en el formato con ssh_config, lo cual es útil para especificar alternativas para las que no existe un indicador de línea de comandos scp separado.
- -P port: determina el número de puerto al que conectarse en el host remoto. Dicha opción se escribe con "P" mayúscula porque -p está reservada para preservar los tiempos y modos del archivo en rcp.
- -p: preserva los tiempos de modificación y acceso así como los modos del archivo original.
- -q: desactiva el medidor de progreso.
- -r: se utiliza para copiar directorios enteros de forma recursiva.
- -S programa: el nombre del programa para la conexión cifrada. El programa debe entender las opciones de ssh.
3 ejemplos de comandos SCP
1. Copiar un archivo de un sistema local a uno remoto
Para copiar un archivo de un sistema local a uno remoto, se ejecuta el siguiente comando:
scp file.txt remote_username@ 23.65. 75.88:/remote/directory
El “file.txt” es el nombre del archivo que se desea copiar, mientras que remote_username es el usuario del servidor remoto; y 23.65.75.88, la dirección IP del servidor.
Por último, “/remote/directory” representa la ruta al directorio donde se quiere copiar el archivo. Si no se especifica un directorio remoto, se copiará en el directorio personal del usuario remoto. Además, si se desea guardar el archivo con otro nombre, es necesario establecerlo así:
scp file.txt remote_username@23.65.75.88:/remote/directory/newfilename.txt.
También se pueden cambiar los puertos SCP como se mencionó anteriormente. En caso contrario, el puerto por defecto será el 22.
2. Copiar un archivo remoto a un sistema local utilizando el comando SCP
Para copiar un archivo de un sistema remoto a uno local, es necesario utilizar la ubicación remota como origen y la local como destino. El comando -seguimos usando la misma dirección IP del servidor que en el último ejemplo- es el siguiente:
scp remote_username@23.65.75.88:/remote/file.txt /local/directory
A continuación se pedirá introducir la contraseña para comenzar el proceso.
3. Copiar un archivo entre dos sistemas remotos utilizando el comando SCP
El siguiente comando copiará el archivo desde el host remoto al directory/files en la máquina remota:
scp user1@host1.com:/files/file.txt user2@host2.com:/files
Después, se pedirá introducir la contraseña para ambas cuentas.
Preguntas frecuentes
¿Qué es un servidor SCP?
Un servidor SCP se refiere a la transferencia de datos a un servidor SSH, que proporciona todas las ventajas de SSH: seguridad, encriptación y confidencialidad.
¿Cuál es la principal diferencia entre SCP y RCP?
El Protocolo de Copia Segura (SCP) es una implementación segura del RCP (Remote Copy Protocol), un protocolo para transferir archivos a través de una red. La principal diferencia entre SCP y RCP es la capa de seguridad.
¿Cuál es la diferencia entre CP y SCP?
CP y SCP son dos comandos diferentes utilizados para copiar archivos, pero este último protege los datos mientras copia a través de una conexión SSH cifrando los archivos y las contraseñas.