Protocolo de copia segura
Protocolo de copia segura (SCP) es un medio para transferir archivos informáticos de forma segura entre un host local y un host remoto o entre dos hosts remotos. Está basado en el protocolo Secure Shell (SSH). "SCP" comúnmente se refiere tanto al Protocolo de copia segura como al programa en sí.
Según los desarrolladores de OpenSSH en abril de 2019, SCP está desactualizado, es inflexible y no se repara fácilmente; recomiendan el uso de protocolos más modernos como SFTP y rsync para la transferencia de archivos. A partir de la versión 9.0 de OpenSSH, el cliente scp
utiliza SFTP para transferencias de archivos de forma predeterminada en lugar del protocolo SCP/RCP heredado.
Protocolo de copia segura
El SCP es un protocolo de red, basado en el protocolo BSD RCP, que admite transferencias de archivos entre hosts en una red. SCP utiliza Secure Shell (SSH) para la transferencia de datos y utiliza los mismos mecanismos de autenticación, garantizando así la autenticidad y confidencialidad de los datos en tránsito. Un cliente puede enviar (cargar) archivos a un servidor, incluyendo opcionalmente sus atributos básicos (permisos, marcas de tiempo). Los clientes también pueden solicitar archivos o directorios desde un servidor (descargar). SCP se ejecuta a través del puerto TCP 22 de forma predeterminada. Al igual que RCP, no existe un RFC que defina los detalles del protocolo.
Función
Normalmente, un cliente inicia una conexión SSH al host remoto y solicita que se inicie un proceso SCP en el servidor remoto. El proceso SCP remoto puede operar en uno de dos modos:
- modo fuente, que lee los archivos (normalmente del disco) y los envía de vuelta al cliente, o
- modo de fregadero, que acepta los archivos enviados por el cliente y los escribe (normalmente al disco) en el host remoto.
Para la mayoría de los clientes SCP, el modo fuente generalmente se activa con el indicador -f
(desde), mientras que el modo receptor se activa con -t
(to). Estos indicadores se utilizan internamente y no están documentados fuera del código fuente de SCP.
Modo remoto a remoto
En el pasado, en la copia segura de remoto a remoto, el cliente SCP abre una conexión SSH al host de origen y solicita que éste, a su vez, abra una conexión SCP al destino. (El modo remoto a remoto no admitía la apertura de dos conexiones SCP y el uso del cliente de origen como intermediario). Es importante tener en cuenta que SCP no se puede utilizar para copiar de forma remota desde el origen al destino cuando se opera en modo de autenticación con contraseña o teclado interactivo, ya que esto revelaría las credenciales de autenticación del servidor de destino al origen. Sin embargo, es posible con métodos basados en claves o GSSAPI que no requieren la entrada del usuario.
Recientemente, el modo remoto a remoto admite el enrutamiento del tráfico a través del cliente que originó la transferencia, aunque sea un tercero en la transferencia. De esta manera, las credenciales de autorización deben residir únicamente en el cliente de origen, el tercero.
Problemas al utilizar perfiles de shell habladores
SCP no espera que el texto se comunique con el shell de inicio de sesión SSH. El texto transmitido debido al perfil SSH (por ejemplo, echo "Welcome"
en el archivo .bashrc
) se interpreta como un mensaje de error y una línea nula (echo ""
) hace que el cliente SCP se bloquee esperando a que se complete el mensaje de error.
Programa scp
El programa SCP es una herramienta de software que implementa el protocolo SCP como un demonio de servicio o cliente. Es un programa para realizar copias seguras.
Quizás el programa SCP más utilizado sea el programa scp
de línea de comandos OpenSSH, que se proporciona en la mayoría de las implementaciones SSH. El programa scp
es el análogo seguro del comando rcp
. El programa scp
debe ser parte de todos los servidores SSH que quieran proporcionar servicio SCP, ya que scp
también funciona como servidor SCP. Desde OpenSSH 9.0, el programa se ha actualizado para utilizar el protocolo SFTP más nuevo y seguro; Se agrega una opción -O
para usar SCP con servidores antiguos solo para SCP.
Sintaxis
Normalmente, la sintaxis del programa scp
es como la sintaxis de cp (copiar):
Copiar un archivo local a un host remoto:
scp LocalSourceFile usuario@remoto:directorio/ObjetivoFile
Copiar archivo desde el host remoto y copiar carpeta desde el host remoto (con el modificador -r
):
scp usuario@remoto:directorio/SourceFile LocalTargetFilescp -r usuario@anfitrión:directorio/SourceFolder LocalTargetFolder
Tenga en cuenta que si el host remoto utiliza un puerto distinto al predeterminado 22, se puede especificar en el comando. Por ejemplo, copiar un archivo del host:
scp -P 2222 usuario@anfitrión:directorio/SourceFile ObjetivoFile
Otros clientes
Como el Protocolo de copia segura implementa transferencias de archivos únicamente, los clientes GUI SCP son raros, ya que implementarlo requiere funcionalidad adicional (al menos un listado de directorios). Por ejemplo, WinSCP utiliza de forma predeterminada el protocolo SFTP. Incluso cuando operan en modo SCP, los clientes como WinSCP generalmente no son clientes SCP puros, ya que deben usar otros medios para implementar la funcionalidad adicional (como el comando ls). Esto, a su vez, genera problemas de dependencia de la plataforma.
Las herramientas más completas para administrar archivos a través de SSH son los clientes SFTP.
Seguridad
En 2019, se anunció la vulnerabilidad CVE-2019-6111 relacionada con la herramienta y el protocolo SCP openssh que permite a los usuarios sobrescribir archivos arbitrarios en el directorio de destino del cliente SCP.