En el pasado, la forma en que scpfuncionaba, 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
scpprimero abriría una sshsesión en remote1, y luego se ejecutaría scpdesde 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 -3capacidad scp) requiere dos pasos. El primer paso necesario es usar ~/.ssh/configpara 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 -3opción, como sigue:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
La -3opción da instrucciones scppara 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.