Ti è mai capitato di voler trasferire file attraverso una rete di computer e di affrontare sfide di sicurezza? Bene, non puoi semplicemente lanciare i tuoi file in rete e sperare che rimangano al sicuro, come Cappuccetto Rosso! Hai bisogno di misure di sicurezza. Dovresti usare un protocollo di trasferimento file che garantisca la protezione dei tuoi dati contro accessi non autorizzati, intercettazione di rete, violazioni di dati e altre minacce.
Secure Copy Protocol (SCP) è un potente protocollo di rete per il trasferimento file che trasferisce file tra diverse macchine su una rete. In questo articolo del blog, approfondiremo il funzionamento di questo protocollo ed esploreremo le possibilità di usare SCP da macchine remote a macchine locali.
Come funziona SCP?
SCP utilizza SSH (Secure Shell) per trasferire i tuoi file. Ma cosa significa veramente? SSH è un protocollo di rete per l'accesso remoto sicuro ai server. Offre metodi per autenticarsi, crittografare e verificare l'integrità dei dati trasmessi. SCP si appoggia a queste funzioni di sicurezza e ai metodi di crittografia forniti da SSH per trasferire file sulla rete in modo sicuro. In questo modo, puoi utilizzare SCP da remoto a locale con la certezza che i tuoi dati rimangono autentici e confidenziali.
Usare SCP per il trasferimento file: perché e come?
Usare SCP da remoto a locale e SCP da locale a remoto è un modo efficiente e flessibile di trasferire file. SCP offre vantaggi significativi rispetto ad altri metodi. Ad esempio, fornisce misure di sicurezza più robuste rispetto a protocolli come FTP. Un altro aspetto in cui SCP si distingue è la velocità: è molto più veloce di protocolli come SFTP, e rappresenta uno strumento eccellente per il trasferimento file tra macchine Linux.
Con SCP puoi spostare file:
- Da una macchina locale a una macchina remota
- Da una macchina remota a una macchina locale
- Da una macchina remota a un'altra macchina remota.
Passiamo ora alla sintassi SCP per il trasferimento file. La prima cosa da fare è configurare SSH su entrambi i computer. Tuttavia, è importante notare che SSH è solitamente già installato su tutte le macchine Linux. Se è questo il tuo caso, puoi saltare questi passaggi.
1. Configurazione di SSH
Esegui il seguente comando per installare SSH:
sudo apt install openssh-client
2. Generazione delle chiavi SSH
Il dispositivo client deve stabilire una connessione SSH. Una connessione sicura tra client e server richiede una chiave privata e una chiave pubblica. Questo comando crea una coppia di chiavi SSH:
ssh-keygen
Durante l'esecuzione di questo comando, ti verrà probabilmente chiesto di fornire un nome per la coppia di chiavi e una passphrase (facoltativa). Dopo aver creato la coppia di chiavi, devi copiare la chiave pubblica sulla macchina server.
Vediamo la struttura generale del comando SCP:
scp [options] [source username@IP]:/[directory/file name] [destination username@IP]:/[directory]
- [opzioni] > Questa sezione può essere sostituita con diverse opzioni del comando SCP che vedremo dopo.
- [username_origine@IP] > Questa sezione deve essere sostituita con il nome utente e l'indirizzo IP della macchina locale. Per esempio: [email protected]
- [directory/nome_file] > Questa sezione deve essere sostituita con il percorso del file che vuoi inviare.
- [username_destinazione@IP] > Questa sezione deve essere sostituita con il nome utente e l'indirizzo IP della macchina ricevente.
- [directory] > Sostituisci questa sezione con il percorso desiderato del file sulla macchina remota.
Ora conosci la struttura generale del comando. Vediamo tutte le opzioni utili del comando SCP:
| Opzione | Caso d'uso |
| -C |
Con questa opzione, SCP comprime i file durante il trasferimento.
|
| -c <cipher> |
Puoi usare questa opzione per indicare a SCP di usare un cifrario specifico. Per esempio: scp -c <aes128-ctr>.
|
| -v |
Questa opzione ti mostra il progresso passo dopo passo.
|
| -l <limit in kilobytes> |
Questa opzione ti permette di limitare la larghezza di banda massima. Per esempio, il seguente comando imposta l'utilizzo della banda a 100 kb al secondo: scp -l 100
|
| -P |
Con questa opzione puoi cambiare la porta SSH del server remoto a cui vuoi connetterti. SCP usa la porta 22 per impostazione predefinita.
|
| -S <nome del programma> |
Puoi usare questa opzione per scegliere un programma per la connessione.
|
| -r |
Copia un file intero o una directory in modo ricorsivo.
|
Trasferire file con SCP
Ti ricordi che abbiamo tre tipi di trasferimenti con SCP, vero? Ora vogliamo esplorare ogni tipo di trasferimento separatamente. Ma prima definiamo l'obiettivo. Ho una foto del mio gatto sul desktop del mio computer Linux, e nel primo step voglio trasferirla su un server remoto Linux. Poi la trasferirò di nuovo al mio computer locale. Infine, il fortunato gatto si sposterà tra due macchine remote.

SCP da locale a remoto
Questo comando trasferisce il file dal tuo computer locale a un server remoto:
scp [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Per usare il comando scp con password devi inserire la password del tuo server remoto. E il gioco è fatto.

SCP da remoto a locale
Per invertire questo processo, non hai bisogno di accedere al terminale del server remoto. Sul terminale del tuo computer locale, digita questo comando:
scp [username]@[IP address of the remote machine]:[path/to/the/file] [path/to/the/location]
Come vedi, abbiamo semplicemente invertito le due parti del comando.

SCP tra due macchine remote
Adesso trasferiremo il file tra due macchine remote. Questo passaggio richiede la password di entrambe le macchine, quindi assicurati di averle. Usa questo comando per trasferire un file tra due computer remoti:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]

Altri comandi SCP comuni
I comandi SCP più comuni sono scp da remoto a locale, scp da locale a remoto e SCP tra due host remoti. Ma non fermiamoci qui ed esploriamo altri utili esempi di scp Linux.
1. Copia ricorsiva di un'intera directory
Immagina di voler trasferire un'intera directory con tutti i file che contiene. Sarebbe molto dispendioso in termini di tempo trasferire quei file uno per uno. Invece, puoi usare il comando scp per più file per copiare una directory ricorsivamente:
scp -r [Path/to/directory] [username of the remote server]@[Ip address]:/[path/to/the/location]
Questo può essere utile in molti scenari:
- Distribuzione del Codice quando distribuisci codice o applicazioni web, potresti aver bisogno di trasferire un'intera directory con tutti i suoi componenti come file e script.
- Backup e sincronizzazione: Se vuoi avere un backup di un'intera directory o se vuoi sincronizzare due directory sulla macchina locale e sul server remoto, devi copiare tutto ricorsivamente.
- Migrazione del Sistema: Un compito cruciale nella migrazione del sistema è copiare e trasferire tutte le informazioni vitali. Usare il comando SCP con l'opzione -r garantisce che non ti perda nulla durante il processo di migrazione.
2. Limitazione dell'utilizzo della larghezza di banda
Se vuoi controllare la velocità di trasferimento dei tuoi dati, puoi usare il seguente comando:
scp -l <limit> [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Perché lo faresti?
In questi due scenari, puoi usare la sintassi scp Linux per limitare la larghezza di banda:
- Congestione della rete: Se la tua rete è molto congestionata, limitare la larghezza di banda con scp può aiutare a distribuire meglio le risorse di rete. Limitare la larghezza di banda con SCP garantisce che altri compiti relativi alla rete funzionino senza problemi. Questo è importante anche quando trasferisci file su una rete condivisa, perché il tuo processo potrebbe ostacolare le attività di rete di altri utenti.
- Trasferimenti in Background Durante i trasferimenti SCP in background come backup automatici o processi di sincronizzazione, c'è il rischio che questi compiti consumino tutte le tue risorse di rete. In questo caso, puoi limitare la larghezza di banda su questi processi di trasferimento per gestire meglio le risorse.
3. Ottenere un log dettagliato
Usare l'opzione -v con SCP ti darà un log dettagliato con informazioni aggiuntive sul processo di trasferimento. Puoi usare il comando qui sotto per ottenere feedback e informazioni dettagliate:
scp -v [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Ecco perché devi ricordare e usare questo comando:
- Risoluzione dei problemi: usare questa opzione ti mostra l'avanzamento del trasferimento in tempo reale. Puoi vedere informazioni come la dimensione del file e la percentuale di completamento. Ti fornisce anche messaggi di errore e avvisi. Combinando questi dati puoi monitorare e risolvere i problemi del processo di trasferimento quando necessario.
4. Specifica di una porta SSH
Usare la sintassi scp Linux con l'opzione -P ti permette di cambiare la porta SSH. Ecco il comando che ti consente di farlo:
scp -P [port number] [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Questo può essere utile per:
- Configurazione Firewall: Se la porta SSH predefinita è bloccata o se vuoi nascondere il servizio SSH da minacce potenziali, puoi cambiare la porta SSH.
Esistono alternative a SCP?
SCP è veloce e sicuro, e conoscendo la giusta sintassi scp Linux e qualche tecnica di troubleshooting, potrebbe essere l'unico strumento di cui hai bisogno. Tuttavia, non c'è nulla di male nel rivedere le sue alternative.
1. rsync
rsync è uno strumento versatile per il trasferimento di file con capacità avanzate di sincronizzazione, trasferimenti incrementali e copia remota e locale. Può anche ridurre l'uso della larghezza di banda trasferendo solo le differenze tra i file di origine e di destinazione. Un altro grande vantaggio di usare rsync è che può riprendere i trasferimenti di file interrotti da dove si erano fermati e continuare il processo.
Vantaggi di rsync
- Sincronizzazione efficiente di file e directory.
- Supporta l'algoritmo di trasferimento delta, riducendo il traffico dati.
- Consente di riprendere i trasferimenti interrotti.
Cons di rsync
- Richiede rsync installato sia sul sistema di origine che su quello di destinazione.
- Richiede più configurazione e opzioni di comando rispetto a scp.
2. SFTP (Protocollo di trasferimento file SSH)
SFTP fornisce un modo sicuro per trasferire file su SSH. Offre funzionalità simili a FTP ma opera su una connessione SSH crittografata, proprio come SCP. Tuttavia, in alcuni aspetti, i vantaggi di SFTP superano quelli di SCP. SCP non può generare elenchi di directory, creare o eliminare cartelle, ecc. SFTP, invece, può eseguire tutti questi compiti.
Vantaggi SFTP
- Trasferimento sicuro di file con crittografia.
- Funzionalità di gestione file remoti.
- Ampia disponibilità su molti sistemi Linux e Unix.
Svantaggi SFTP
- La sintassi e l'utilizzo dei comandi differiscono da FTP tradizionale.
- Potrebbe avere supporto limitato su certi sistemi embedded o dispositivi.
3. FTP (Protocollo di trasferimento file)
FTP è un protocollo standard ampiamente utilizzato per il trasferimento di file. Funziona secondo un modello client-server e offre funzionalità di trasferimento file di base.
Vantaggi FTP
- Ampio supporto su varie piattaforme.
- Sono disponibili client da riga di comando e grafici familiari.
Svantaggi FTP
- Manca di crittografia / meno sicuro rispetto a scp e sftp.
- Potrebbe richiedere configurazione aggiuntiva del firewall per stabilire connessioni.
- Autenticazione in testo semplice.
Nel complesso, sebbene scp sia una scelta semplice e affidabile per il trasferimento sicuro di file su SSH, alternative come rsync, sftp e FTP possono offrire funzionalità aggiuntive e flessibilità a seconda delle esigenze specifiche.
Allora come scegli quale utilizzare? Dovresti considerare fattori come la sicurezza, le esigenze di sincronizzazione, la facilità d'uso e la compatibilità con i tuoi sistemi e protocolli. Ad esempio, se la sicurezza e la riservatezza dei dati sono i fattori più importanti nel tuo trasferimento di file, FTP non è una buona scelta.
Conclusione
SCP è uno strumento veloce e sicuro per il trasferimento di file tra computer. Puoi usare scp da remoto a locale, da locale a remoto, e persino tra due sistemi remoti per trasferire file. Sebbene ci siano alternative a SCP che fanno un lavoro adeguato, come rsync, SCP le supera in molti aspetti, specialmente in termini di sicurezza e velocità. In questo articolo abbiamo parlato di SCP, i suoi casi d'uso, le alternative e abbiamo anche fornito un foglio di aiuto per accedere facilmente alla sintassi più utilizzata.
Domande frequenti
Ci sono problemi di sicurezza di cui devo essere consapevole quando utilizzo SCP da remoto a locale?
SCP è uno strumento piuttosto sicuro, e non devi preoccuparti delle minacce alla sicurezza mentre lo usi. Tuttavia, è sempre consigliato adottare tutte le misure di sicurezza aggiuntive che puoi.
Quali sono gli errori più comuni che si verificano quando si utilizza SCP da remoto a locale?
Quando si utilizza SCP per trasferire file da un server remoto a una macchina locale, gli utenti possono incontrare diversi errori comuni. Ecco due dei più comuni errori quando si usa SCP da remoto a locale:
- Nessun file o cartella presente: questo errore si verifica quando non hai specificato il numero di porta corretto, le impostazioni dei permessi sono errate, o quando le informazioni di accesso sono scorrette.
- Verifica della chiave host non riuscita: questo messaggio di errore si verifica quando la chiave host è cambiata a causa di aggiornamenti del server. La chiave host indica che ti sei collegato a quel server in precedenza, e quando la verifica della chiave host fallisce, significa che l'identità del server è cambiata. Questo errore è un tentativo di proteggerti dal connetterti a un server fraudolento.
Come utilizzo SCP per trasferire file tra sistemi remoti?
Per trasferire correttamente i file tra sistemi usando SCP, entrambi i computer devono essere accessibili tramite SSH. Hai anche bisogno dell'indirizzo IP e della password delle macchine remote. Il resto è solo usare il comando SCP corretto:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]
Dopo aver digitato questo comando, ti verrà chiesto di fornire la password dei server. Dopo di che, il tuo file sarà trasferito.