- ¿Qué es y para qué sirve SCP?
- SCP o Secure Copy Protocol permite la transferencia segura de archivos entre un host local y otro remoto o entre dos hosts remotos, usando el protocolo Secure Shell (SSH).El término SCP puede referirse a cualquiera de los dos conceptos siguientes: el protocolo SCP o el programa SCP.En este artículo aprenderemos a instalar el paquete openssh-client, necesario para trabajar el cliente SCP del proyecto OpenSSH y presentarmos simples ejemplos de como transferir archivos con el cliente SCP.El paquete openssh-client proporciona los clientes de ssh, scp y sftp, los programas ssh-agent y ssh-add para hacer más comoda la autenticación de clave pública, y las utilidades ssh-keygen, ssh-keyscan, ssh-copy-id y ssh-argv0.
- Instalación del paquete openssh-client
Antes de comenzar la instalación actualizamos los repositorios con la siguiente orden:A continuación procedemos a la instalación del paquete openssh-client. - Sintáxis del comando
- La sintáxis del comando es la siguiente:Explicar la sintáxis completa y cada una de las opciones del comando scp esta fuera del alcance de este artículo. No obstante, para obtener más ayuda puedes ejecutar la siguiente orden:o acceder a la Página del Manual de SCP en línea.La sintaxis básica es esta:
- scp -> Es el comando en sí, copia uno más archivos por medio de una conexión segura.
- [[usuario@]host_origen:]file1 -> Indica el origen de donde el archivo o los archivos serán copiados. Puede o no contener la información del ordenador remoto y también, puede contener la información del usuario que es dueño del archivo o archivos en el ordenador remoto. Si el usuario no esta especificado, entonces por defecto usará la cuenta usuario actual en el ordenador donde se ejecuta el comando. Y si ningún ordenador remoto es especificado, entonces buscará el archivo localmente.
- [[usuario@]host_destino:]file2 -> Indica el destino a donde el archivo o los archivos serán copiados. Puede o no contener la información del ordenador remoto, y también puede contener la información del usuario que es dueño del archivo o archivos en el ordenador remoto. Si el usuario no esta especificado, entonces por defecto usará la cuenta usuario actual en el ordenador donde se ejecuta el comando. Y si ningún ordenador remoto es especificado, entonces buscará el archivo localmente.
NOTA ACLARATIVA: Se puede no especificar ni host ni usuario tanto en el origen como en el destino, y en este caso el comando scp actuará como el comando cp y copiará los archivos localmente.
CONSIDERACIONES DE SEGURIDAD: Para copiar archivos o directorios entre sistemas, debe tener permiso para iniciar sesión y copiar archivos. El comando scp, como componente del comando ssh, requiere que tenga una cuenta de usuario o acceso a claves de host en el sistema remoto. Véase autenticar con clave pública.
ESPECIFICACIÓN DEL ORIGEN Y EL DESTINO PARA OPERACIONES DE COPIA: Con el comando scp, puede especificar el origen (el archivo o el directorio que se copiará) y el destino (la ubicación en la que se copiará el archivo o el directorio). Puede acortar las cadenas de ruta con el carácter de tilde (~) y los caracteres comodín de shell (*, ?, {}, etc).
El carácter de tilde (~) se expande en todos los programas de shell en el directorio raíz del usuario actual. El usuario actual es el usuario con el que se ejecuta el shell. Si el directorio raíz del usuario mortadelo es /home/mortadelo, entonces para el usuario mortadelo, ~/archivo.txt se expande a /home/mortadelo/archivo.txt.
Esta expansión también funciona para las rutas remotas. Si el usuario mortadelo desea copiar un archivo de su directorio raíz, estas tres descripciones de rutas son equivalentes:- host_remoto:/home/mortadelo/archivo.txt
- host_remoto:~/myfile.txt
- host_remoto:archivo.txt
Esta expansión también resulta útil al hacer referencia al directorio raíz remoto de otro usuario. En este caso, debe incluirse el nombre del usuario después del carácter de tilde (~). Para el usuario mortadelo, host_remoto:~mortadelo/myfile.txt es equivalente a host_remoto:/home/mortadelo/archivo.txt, pero es más corto para escribir. - Ejemplos de sintaxis para scp NOTA: En este artículo se da por hecho que existe un servidor SSH en la red, si no es así puedes ver el artículo Instalar y configurar el servicio SSH en Debian para aprender como instalarlo.
- Copiar archivo desde el host remoto al host local
Copiar el archivo foobar.txt ubicado en un directorio del equipo remoto a un directorio ubicado en el equipo local: - Copiar archivo desde el host local al host remoto
Copiar el archivo foobar.txt ubicado en un directorio del equipo local a un directorio ubicado en el equipo remoto: - Copiar directorio y todo su contenido desde el host remoto al host local (Volver al índice General)
Copiar todo el contenido del directorio foo ubicado en el equipo remoto al directorio bar ubicado en el equipo local:Copiar todo el contenido del directorio foo ubicado en el equipo remoto al directorio actual. El “.” indica el directorio donde se está ejecutando el comando en el equipo local:El parámetro “-r” significa recursivo, es decir, copia la carpeta y todo su contenido, incluidas las subcarpetas y el contenido de éstas. Si no lo ponemos, la orden para copiar sólo los archivos de una carpeta sería: - Copiar directorio desde el host local al host remoto
Copiar todo el contenido del directorio foo ubicado en el equipo local al directorio bar ubicado en el equipo remoto:La orden para copiar sólo los archivos de una carpeta sería: - Copiar archivo desde un host remoto a otro host remoto
Supongamos que queremos copiar archivos entre dos equipos remotos. Desde nuestro equipo local podemos ejecutar la orden de que se copien archivos de un equipo remoto a otro equipo remoto.Un ejemplo más descriptivo: - Copiar archivo de un host remoto al mismo host remoto pero en otro directorio (Volver al índice General)
- Copiar múltiples archivos
Solo tendremos que ponerlos en una lista separada por espacios:Si los archivos están en diferentes directorios, habrá que especificar la ruta completa.
- Copiar archivo desde el host remoto al host local
- Opciones de funcionamiento
- Copiando por un puerto distinto al estándard 22/TCP
Con el parámetro -P puerto le indicamos a scp que conecte con el servidor remoto por un puerto distinto al 22/TCP. En ese ejemplo le indicamos que se conecte por el puerto 2264/TCP: - Utilizar otro algoritmo de cifrado en la conexión
Por defecto scp usa Triple-DES para cifrar los datos a enviar. Utilizando el algoritmo de cifrado Blowfish aumentamos la velocidad. Para hacerlo, añadimos el parámetro -c blowfish a la línea de comandos:Pero si lo que más importa es la seguridad, podemos incrementarla a costa sacrificar algo de velocidad utilizando el algoritmo de cifrad Triple-DES: - Comprimir los datos en la conexión
A menudo se sugiere utilizar el parámetro -C, que comprime los datos a enviar, para aumentar la velocidad. El efecto de la compresión sólo aumentará significativamente la velocidad de la conexión si esta es muy lenta. De lo contrario, sólo será una carga adicional para la CPU. - Limitar el ancho de banda
Con el parámetro -l limit le indicamos a scp el límite en Kbits/s. Si queremos limitar el ancho de banda a 75Kbps ejecutaremos la siguiente orden: - Definir el uso de IPv4 o IPv6
Para forzar el uso de IPv4:Para forzar el uso de IPv6: - Modo verbose
Para obtener más información de salida del comando podemos usar el parámetro -v
- Copiando por un puerto distinto al estándard 22/TCP
Comentarios
Publicar un comentario