introduzione
Quando si usano comandi come scp
o rsync
con l'indirizzo IP pubblico del proprio server, si trasferiranno automaticamente i file su Internet (pubblico). Se hai due istanze con la rete privata abilitata, puoi anche trasferire questi file sulla rete privata ed evitare costi aggiuntivi per la larghezza di banda utilizzata.
Prerequisiti
- Due istanze (le chiameremo
server_a
e server_b
) con la rete privata abilitata
- Entrambe le istanze devono avere indirizzi IP privati configurati nella stessa sottorete (vedere Configurazione della rete privata )
- La connettività SSH dovrebbe essere possibile tra le due istanze
- Un utente che non è root (lo chiameremo
your_user
)
Generazione e utilizzo delle chiavi SSH
Il trasferimento di file è possibile utilizzando l'autenticazione con nome utente e password, ma è molto più sicuro usare le chiavi SSH. La generazione della chiave pubblica-privata è descritta in Come si generano le chiavi SSH? . Se decidi di saltare questa sezione, dovrai inserire la password dell'utente remoto in ogni comando.
Supponendo che la coppia di chiavi pubblica-privata server_a
si trova in ~/.ssh/id_rsa
, è possibile eseguire il seguente comando per trasferire la chiave pubblica server_b
. Utilizzare l'indirizzo IP privato di server_b
.
ssh-copy-id [email protected]
Quando richiesto, fornire la password per your_user
.
ssh-copy-id [email protected] /usr/bin/ssh-copy-id: INFO: Source of
key(s) to be installed: "/home/your_user/.ssh/id_rsa.pub" The
authenticity of host '192.168.0.101 (192.168.0.101)' can't be
established. ECDSA key fingerprint is
SHA256:g9dfqycqU25b567/HDjPTqaQqKhep/fysNCQAG9yJG4. ECDSA key
fingerprint is MD5:41:67:be:68:51:9b:38:a8:95:82:71:47:f1:35:39:66.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),
to filter out any that are already installed /usr/bin/ssh-copy-id:
INFO: 1 key(s) remain to be installed -- if you are prompted now it is
to install the new keys [email protected]'s password:
Number of key(s) added: 1
Ora prova ad accedere al computer.
ssh [email protected]
Verificare che siano state aggiunte solo le chiavi desiderate.
Se ora SSH da server_a
a server_b
, non ti verrà più richiesta una password. Nel caso in cui non si trovi la coppia di chiavi pubblica-privata, è ~/.ssh/id_rsa
possibile specificare la sua posizione con il -i
parametro (sarà necessario anche questo parametro con il comando scp
e rsync
).
ssh-copy-id -i /path/to/your/public_key [email protected]
ssh -i /path/to/your/private_key [email protected]
Trasferimento di file con SCP
SCP è l'acronimo di Secure Copy e trasferisce tutti i dati tramite una connessione SSH. Per copiare un singolo file, ~/myfile
dal server_a
alla /tmp
directory sul server_b
possiamo emettere il seguente comando.
scp ~./myfile [email protected]:/tmp
Per copiare una cartella completa con tutto il suo contenuto (compresi i collegamenti simbolici) è possibile aggiungere l' -r
opzione
scp -r ~./mydir [email protected]:/tmp
Trasferimento di file con Rsync
Rsync è uno strumento versatile per copiare i file, viene spesso utilizzato per sincronizzare il contenuto di due posizioni. Utilizza lo stesso tunnel SSH sicuro per trasferire i dati. Una cartella completa può essere sincronizzata con una directory remota /tmp
con il seguente comando
rsync -av ~/mydir [email protected]:/tmp
L' -v
opzione aumenta la verbosità in modo da poter seguire l'avanzamento del trasferimento. L' -a
opzione abilita la 'modalità archivio' che copia i file in modo ricorsivo preservando gli attributi come proprietario, gruppo e autorizzazioni.