El protocolo de copia segura ( SCP ) es un medio para transferir archivos de computadora de forma segura entre un host local y un host remoto o entre dos host remotos. Se basa en el protocolo Secure Shell (SSH). [1] "SCP" se refiere comúnmente tanto al Protocolo de Copia Segura como al programa en sí. [2]
Según los desarrolladores de OpenSSH en abril de 2019, el protocolo SCP está desactualizado, es inflexible y no se puede solucionar fácilmente; recomiendan el uso de protocolos más modernos como SFTP y rsync para la transferencia de archivos. [3] A partir de la versión 9.0 de OpenSSH, scpel cliente utiliza SFTP para transferencias de archivos de forma predeterminada en lugar del protocolo SCP/RCP heredado. [4]
Protocolo de copia segura
El SCP es un protocolo de red , basado en el protocolo BSD RCP , [5] 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 para la autenticación, asegurando así la autenticidad y confidencialidad de los datos en tránsito . Un cliente puede enviar (subir) archivos a un servidor, incluyendo opcionalmente sus atributos básicos (permisos, marcas de tiempo). Los clientes también pueden solicitar archivos o directorios de un servidor (descarga). SCP se ejecuta sobre el puerto TCP 22 de forma predeterminada. [6] Al igual que RCP, no existe una RFC que defina los detalles específicos del protocolo.
Función
Normalmente, un cliente inicia una conexión SSH con el host remoto y solicita que se inicie un proceso SCP en el servidor remoto. El proceso SCP remoto puede funcionar en uno de dos modos:
- modo de origen, que lee archivos (normalmente del disco) y los envía de vuelta al cliente, o
- modo sumidero, que acepta los archivos enviados por el cliente y los escribe (normalmente en el disco) en el host remoto.
Para la mayoría de los clientes SCP, el modo fuente generalmente se activa con el -findicador (from), mientras que el modo receptor se activa con -t(to). [2] Estos indicadores se utilizan internamente y no están documentados fuera del código fuente 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, a su vez, abra una conexión SCP al destino. (El modo de remoto a remoto no admitía la apertura de dos conexiones SCP y el uso del cliente de origen como intermediario). SCP no se puede utilizar para copiar de forma remota desde el origen al destino cuando se opera en modo de autenticación interactiva con contraseña o teclado, 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 clave o GSSAPI que no requieren la entrada del usuario. [2]
Recientemente, el modo remoto a remoto permite enrutar el 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. [7]
Problemas al utilizar perfiles de shell comunicativos
SCP no espera que se comunique texto con el shell de inicio de sesión SSH. El texto transmitido debido al perfil SSH (por ejemplo, echo "Welcome"en el .bashrcarchivo) se interpreta como un mensaje de error y una línea nula ( echo "") hace que el cliente SCP se bloquee esperando que se complete el mensaje de error. [2]
programa scp
El programa SCP [8] 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 es el programa de línea de comandos scp OpenSSH , que se proporciona en la mayoría de las implementaciones de SSH. El scpprograma es el análogo seguro del rcpcomando. El scpprograma debe ser parte de todos los servidores SSH que quieran proporcionar el servicio SCP, ya que también funciona como servidor SCP. Desde OpenSSH 9.0, el programa se ha actualizado para utilizar el protocolo SFTPscp más nuevo y más seguro ; se agregó una opción para usar SCP con servidores antiguos que solo admitían SCP. [4]-O
Sintaxis
Normalmente, la sintaxis del scpprograma [9] es como la sintaxis de cp(copiar) :
Copiar archivo local a un host remoto:
scp LocalSourceFile usuario @ host remoto : directorio / TargetFile
Copiar archivo desde un host remoto y copiar carpeta recursivamente (con -rmodificador) desde un host remoto:
scp usuario @ host remoto : directorio / ArchivoOrigenArchivoDestinoLocal scp -r usuario @ host : directorio / CarpetaOrigenCarpetaDestinoLocal
Tenga en cuenta que si el host remoto utiliza un puerto distinto del 22 predeterminado, se puede especificar en el comando. Por ejemplo, copiar un archivo desde el host:
scp -P 2222 usuario @ host : directorio / ArchivoOrigen ArchivoDestino
Otros clientes
Como el Protocolo de Copia Segura implementa únicamente transferencias de archivos, los clientes SCP GUI son poco comunes, ya que su implementación requiere una funcionalidad adicional ( al menos, listado de directorios ). Por ejemplo, WinSCP utiliza de forma predeterminada el protocolo SFTP. [10] Incluso cuando funcionan en modo SCP, los clientes como WinSCP normalmente no son clientes SCP puros, ya que deben usar otros medios para implementar la funcionalidad adicional (como el lscomando ). [11] Esto, a su vez, genera problemas de dependencia de la plataforma.
Herramientas más completas para gestionar archivos a través de SSH son los clientes SFTP .
Seguridad
En 2019, se anunció la vulnerabilidad CVE - 2019-6111 [12] relacionada con la herramienta y el protocolo SCP openssh que permitía a los usuarios sobrescribir archivos arbitrarios en el directorio de destino del cliente SCP.
Véase también
Referencias
- ^ "Comando scp para Linux y Unix". Computer Hope . Consultado el 4 de agosto de 2015 .
- ^ abcd Pechanec, Jan. "Cómo funciona el protocolo SCP". Blog de Jan Pechanec . Oracle. Archivado desde el original el 15 de febrero de 2017. Consultado el 4 de agosto de 2015 .
- ^ "OpenSSH 8.0". Notas de la versión de OpenSSH . 17 de abril de 2019.
- ^ ab "OpenSSH 9.0". Notas de la versión de OpenSSH . 8 de abril de 2022.
- ^ "scp(1) - Páginas del manual de OpenBSD (sección de historial)" . Consultado el 25 de junio de 2012 .
- ^ "SCP - Protocolo de copia segura: ¿qué es, definición completa y ejemplos de comandos?". Descargas para PC y redes - PCWDLD.com . 2019-06-29 . Consultado el 2020-05-22 .
- ^ Carroll, Brandon (16 de agosto de 2017). «Cómo usar Secure Copy para la transferencia de archivos». TechRepublic . Consultado el 22 de mayo de 2020 .
- ^ "OpenSSH portátil". GitHub . 13 de mayo de 2022.
- ^ "scp(1) - Páginas del manual de OpenBSD" https://man.openbsd.org/scp
- ^ "Protocolos de transferencia de archivos admitidos :: WinSCP". winscp.net . Consultado el 22 de mayo de 2020 .
- ^ "La página SCP/Shell (cuadro de diálogo Configuración avanzada del sitio) :: WinSCP". winscp.net . Consultado el 22 de mayo de 2020 .
- ^ "NVD - Cve-2019-6111".