En el pasado, la forma en que scp
funcionaba, cuando se le llamaba ( ingenuamente ) para copiar archivos entre sistemas remotos, era muy inconveniente: si escribía, por ejemplo
scp user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
scp
primero abriría una ssh
sesión en remote1, y luego se ejecutaría scp
desde allí a remote2. Para que esto funcione, tendría que configurar las credenciales de autorización para remote2 en remote1.
La forma moderna de hacerlo, en cambio, ("moderna" porque se implementó hace solo unos años, y tal vez no todos tienen -3
capacidad scp
) requiere dos pasos. El primer paso necesario es usar ~/.ssh/config
para configurar todas las opciones para la conexión a remoto1 y remoto2, de la siguiente manera:
Host remote1.example.org
Port 2222
IdentityFile /path/to/host1-id_rsa
Host remote2.example.org
Port 6969
IdentityFile /path/to/host2-id_rsa
De esta manera, es posible pasar todas las opciones necesarias al comando sin ambigüedades : por ejemplo, si hubiéramos dicho en la CLI que use el puerto 2222 sin la configuración anterior, no habría estado claro si nos referíamos a remoto1 o remoto2 , y igualmente para el archivo que contiene las claves criptográficas. De esta manera, la CLI se mantiene ordenada y simple.
En segundo lugar, use la -3
opción, como sigue:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
La -3
opción da instrucciones scp
para enrutar el tráfico a través de la PC en la que se emite el comando, aunque sea un tercero en la transferencia. De esta manera, las credenciales de autorización deben residir solo en la PC emisora, el tercero.