SCP tra due host remoti

Chiunque abbia lavorato per più di 10 minuti usando SSH conoscerà sicuramente SCP, il comando che permette di copiare un file tra due macchine appoggiandosi ad una sessione ssh. Il principio è semplice: si può copiare un file da un server ssh alla nostra machina locale oppure un file dalla nostra macchina locale al server. Semplice. Un esempio?

Da qui a li:

scp file.txt utente@server:/directory/

Da li a qui:

scp utente@server:/directory/file.txt .

Ciò che in pochi realizzano è che lo stesso comando può essere usato per copiare un file tra due server entrambi remoti. Il principio è semplice;

scp utente1@serverorigine:/directory/file.txt utente2@serverdestinazione:/directory/

Ciò che però la documentazione si scorda di dirvi e che, a differenza di quanto potreste aver pensato, la vostra macchina non farà da ponte (è un feature, non un bug!) bensì farà in modo che il primo server instauri una connessione diretta verso il secondo per copiare il file.

Questo ha delle implicazioni non da poco, nell’ordine:

  • i due server devono essere in grado di parlarsi, topologicamente intendo. Scordatevi la possibilità di fare voi da gateway tra due reti differenti
  • per poter fare la copia il primo server deve essere in grado di autenticarsi in maniera automatizzata sul secondo (authorized_keys… Avete presente?) in quanto la sessione è “cieca” ed il primo server non sarebbe in grado di venirvi a chiedere la password. Questo vincolo ovviamente non riguarda la connessione tra voi ed il primo server, quella può tranquillamente essere password based

Buone copie.