AppleInsider puede ganar una comisión de afiliado en las compras realizadas a través de enlaces en nuestro sitio.
Copia segura es un estándar UNIX utilizado para transferir archivos de un ordenador a otro. Él es cómo utilizar la función en macOS, todo a través de la ventana Terminal.
Antes de los ordenadores personales, existían los ordenadores centrales y los terminales de tiempo compartido. Los usuarios se conectaban a una cuenta desde un terminal a un mainframe, y emitían órdenes al mainframe para que las procesara.
Cuando Internet alcanzó la mayoría de edad en los años 90, surgió la necesidad de poder utilizar estos comandos de terminal de forma segura a través de redes y ordenadores. En 1994, un programador finlandés llamado Tatu Ylonen creó Secure Shell. Para más información sobre el uso de Secure Shell, consulta nuestro otro artículo de introducción a SSH.
Como parte del Secure Shell, se creó el programa SCP (Secure Copy Protocol). SCP es tanto un protocolo como un programa UNIX que puede ser ejecutado desde la línea de comandos Terminal en macOS.
SCP permite transferir archivos hacia y desde servidores SSH en ambas direcciones. SCP se basa en el comando RCP (Copia Remota) (parte de los comandos-r de BSD) que se utilizó originalmente cuando BSD alcanzó la prominencia a mediados de 1980.
El puerto TCP por defecto utilizado para la transferencia de archivos SCP es el 22 (el puerto SSH estándar).
A diferencia de otros estándares de Internet, no existe una RFC o estándar formal para SCP – es parte del proyecto OpenSSH de código abierto. Puede ver todo el código fuente de OpenSSH en su proyecto GitHub.
Uso básico
Para utilizar SCP para transferir archivos, primero debe establecer una conexión SSH a través de un login al servidor remoto con el que desea transferir archivos. Esto se hace mediante un login basado en nombre de usuario/contraseña en Terminal, o mediante el uso de infraestructura de clave pública (pares de claves SSH PKI).
Una vez iniciada la sesión en el servidor remoto, se utiliza el comando ‘scp’ seguido de opciones en Terminal para transferir archivos. No hay forma de obtener listados de directorios usando scp, ni tampoco proporciona una forma de borrar archivos remotos, pero puedes usar comandos estándar del sistema de archivos UNIX como ls para obtener listados de directorios una vez iniciada la sesión en el ordenador remoto.
Después de establecer una conexión SSH, todos los comandos de esa pestaña de la ventana Terminal de macOS se dirigen al servidor en lugar de a su Mac.
Por ejemplo, en el Terminal macOS para obtener un listado de directorios de archivos tanto en la máquina local como en el servidor remoto, puede emitir un comando ls como:
La opción “-l” indica a ls que enumere los archivos verticalmente, en la ventana del Terminal, con los detalles de cada archivo/carpeta, como los permisos UNIX, el propietario, el grupo, el tamaño y la fecha y hora de creación del archivo. Si omite la opción “-l”, el comando ls sólo mostrará los nombres de los archivos en varias columnas sin los detalles de cada archivo.
Para más detalles sobre el comando ls, en Terminal escriba man ls y pulse Volver.
Para salir del sistema de páginas de manual en Terminal para cualquier página de manual, escriba Control-Z y pulse Volver.
También puedes utilizar el comando ‘cd’ (cambiar directorio) para cambiar de directorio dentro de un sistema de ficheros local o remoto. Sólo tienes que escribir “cd” seguido de un espacio y el nombre o la ruta del directorio al que deseas cambiar. Todos los comandos del Terminal operarán entonces en ese directorio, a menos que vuelva a escribir cd a otro directorio o especifique una ruta completa en un comando.
Para subir un nivel de directorio en un sistema de ficheros usando cd en Terminal, puede escribir:
Para ir a la parte superior (raíz) de un sistema de archivos, escriba:
Puede hacer que Terminal imprima la ruta completa actual y el nombre del directorio en cualquier sistema de ficheros tecleando:
‘pwd’ es el comando UNIX para obtener la directorio de trabajo actual (es decir – el directorio actual en el que está operando el intérprete de comandos Terminal). Para la página del manual sobre pwd en Terminal, escriba
Consulte la página de manual de scp para más detalles sobre el uso de banderas con el comando:
ejemplos de scp
SCP o ‘scp’ en el Terminal es fácil de usar. La sintaxis básica del comando es ‘scp’ seguido del nombre del archivo, nombre de usuario, nombre del servidor o dirección IP, y ruta del directorio remoto en ese servidor al que se quiere acceder. Por ejemplo
le dice a scp que copie un archivo local en el pwd llamado “ejemplo.txt” al servidor en la dirección IP 10.10.0.1 en el directorio del sistema de archivos de ese servidor llamado “nombre_directorio” como el usuario llamado “usuario_remoto” con la copia del archivo remoto que se llamará también “ejemplo.txt”.
Si omite el nombrese utilizará el mismo nombre que el archivo fuente. Si desea cambiar el nombre del archivo remoto por otro, incluya un nuevo nombre de archivo después de la ruta del directorio remoto al final del comando:
Tenga en cuenta también que el usuario indicado debe tener permisos en el directorio remoto especificado para poder copiar el fichero.
Un ejemplo opuesto – copiar un archivo en el servidor remoto a su Mac, tiene un aspecto similar. Por ejemplo:
copia el archivo llamado “ejemplo.txt” en el directorio “nombreDirectorio” del servidor remoto al Escritorio de su Mac.
También puede especificar banderas inmediatamente después de la parte scp utilizando el signo menos seguido de la opción.
Se pueden utilizar dos banderas después de “scp ” para especificar la versión uno o dos del protocolo SSH: -1′ o -2′. Por ejemplo:
fuerza el uso de la versión dos del protocolo para copiar el fichero ejemplo.txt en el pwd al servidor remoto en 10.10.0.1 en el directorio llamado “nombreDirectorio” con un nuevo nombre de fichero de “nuevoEjemplo.txt”.
Puede copiar directorios enteros utilizando la opción -r..
Algunas otras banderas que puede utilizar con scp para cambiar la forma en que se comporta son:
- -4 Usar sólo direcciones IPv4
- -6 Utilizar sólo direccionamiento IPv6
- -B Modo por lotes (suprime las solicitudes adicionales de autenticación)
- -C Activa la compresión en la conexión
- -F Utilizar un archivo de configuración ssh alternativo para las conexiones
- -i Especifica un archivo de clave privada alternativo a utilizar para las conexiones
- -l (Límite) – Establece el límite de ancho de banda de la conexión en kb/s
- -O (Antiguo) – Fuerza el antiguo protocolo SCP en lugar del nuevo protocolo SSH SFTP durante las transferencias
- -o Pasar opciones adicionales, no de línea de comandos a ssh
- -P Conectar en un número de puerto alternativo distinto de 22
- -p Conservar todos los metadatos del archivo local en el archivo remoto después de la copia, incluyendo fechas y horas
- -q (Silencio) – no mostrar información sobre el progreso de la copia del archivo en el Terminal
- -R (Remoto) – Forzar el uso de la versión remota de scp para las copias en lugar de la local
- -r Copiar de forma recursiva directorios completos en lugar de archivos individuales
- -S Utilizar un programa SSH alternativo para gestionar la conexión SSH
- -v (Verbose) – Imprime información adicional en Terminal para todas las operaciones scp
La opción -O se proporciona para su uso en casos en los que se está conectando a servidores SSH antiguos que no implementan el nuevo Protocolo de Transferencia de Archivos SSH (también parte de SSH);
Puede utilizar la opción -o para pasar parámetros adicionales a ssh, que no están disponibles como opciones de línea de comandos. Vea la página man de scp para más detalles.
scp copias locales
scp funciona perfectamente en su red local entre diferentes tipos de ordenadores y sistemas operativos. Puede conectarse y transferir archivos entre dos ordenadores LAN con la misma facilidad que entre ordenadores remotos de Internet, suponiendo que ambos ordenadores LAN estén ejecutando SSH.
Microsoft incluye SSH en versiones posteriores de Windows 10 a partir de 2019. Para utilizarlo con versiones anteriores de Windows, es posible que tenga que instalar un servidor SSH de terceros en el equipo Windows.
Recursos adicionales
Algunos libros interesantes sobre SSH que puede consultar son:
En futuros artículos exploraremos la transferencia de archivos en Terminal usando dos protocolos de red más modernos: SFTP y rsync.