introduzione
Quando si usano comandi come scpo rsynccon 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_ae 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_asi 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 your_user@192.168.0.101
Quando richiesto, fornire la password per your_user.
ssh-copy-id your_user@192.168.0.101 /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 your_user@192.168.0.101's password:
Number of key(s) added: 1
Ora prova ad accedere al computer.
ssh your_user@192.168.0.101
Verificare che siano state aggiunte solo le chiavi desiderate.
Se ora SSH da server_aa server_b, non ti verrà più richiesta una password. Nel caso in cui non si trovi la coppia di chiavi pubblica-privata, è ~/.ssh/id_rsapossibile specificare la sua posizione con il -iparametro (sarà necessario anche questo parametro con il comando scpe rsync).
ssh-copy-id -i /path/to/your/public_key your_user@192.168.0.101
ssh -i /path/to/your/private_key your_user@192.168.0.101
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, ~/myfiledal server_aalla /tmpdirectory sul server_bpossiamo emettere il seguente comando.
scp ~./myfile your_user@192.168.0.101:/tmp
Per copiare una cartella completa con tutto il suo contenuto (compresi i collegamenti simbolici) è possibile aggiungere l' -ropzione
scp -r ~./mydir your_user@192.168.0.101:/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 /tmpcon il seguente comando
rsync -av ~/mydir your_user@192.168.0.101:/tmp
L' -vopzione aumenta la verbosità in modo da poter seguire l'avanzamento del trasferimento. L' -aopzione abilita la 'modalità archivio' che copia i file in modo ricorsivo preservando gli attributi come proprietario, gruppo e autorizzazioni.