SCP (protocollo Secure Copy): cos’è SCP?
Se si desidera trasferire dati tra due computer si hanno a disposizione vari strumenti e tecniche. Ma con il gran numero di programmi client e di protocolli selezionabili è difficile, soprattutto per i principianti o gli utenti meno esperti, trovare la soluzione giusta per il trasferimento pianificato dei dati. In particolare, quando devono essere inviati dati sensibili, è necessario più di un semplice trasferimento da A verso B. In questo caso vengono effettivamente considerati solo i metodi che offrono una sicurezza adeguata.
Uno di questi metodi è il trasferimento dei dati tramite il protocollo Secure Copy (SCP), appositamente progettato per il trasferimento sicuro di informazioni digitali. Questo articolo rivela cos’è il protocollo SCP e come funziona esattamente.
Cos’è SCP?
Il protocollo Secure Copy (SCP), sovente denominato solo Secure Copy, è un protocollo per i sistemi informatici che garantisce il trasferimento sicuro di dati tra un computer locale (local host) e uno remoto (remote host) o in alternativa tra due computer remoti. Si basa sui comandi rcp (remote copy), pubblicati già nel 1982 come parte dei “comandi Berkeley r“ dall’Università della California (Berkeley), che consentono il controllo del trasferimento di dati tramite la riga di comando.
SCP prevede sia un sistema di autenticazione tra due host che una crittografia della trasmissione. In questo modo il protocollo garantisce non solo la sicurezza ma anche l’autenticità dei dati trasferiti. Per entrambi i meccanismi di protezione il protocollo SCP utilizza SSH (Secure Shell), impiegato anche nei protocolli di trasmissione alternativi come FTP (o SFTP). La porta TCP destinata al trasferimento tramite SCP è la porta standard SSH 22.
Secure Copy è multipiattaforma: esistono implementazioni e programmi per tutti i comuni sistemi Windows, macOS e Linux come pure per Android e iOS.
Come funziona la trasmissione con il protocollo SCP?
Secure Copy presuppone un’autenticazione dei due host interessati. Prima che il trasferimento possa aver luogo tramite il protocollo, occorre innanzitutto stabilire una connessione SSH dal sistema locale al sistema di destinazione remoto. Per questo è necessario disporre dei dati di accesso SSH o di una chiave autorizzata per l’autenticazione con chiave pubblica.
Se si deve utilizzare SCP per il trasferimento di file tra due PC remoti, è necessaria una connessione SSH dal sistema locale che esegue il client SCP al PC remoto, che in questo caso deve fungere da host sorgente.
Non appena viene stabilita la connessione SSH tra i due host, il client SCP avvia un processo di Secure Copy, per il quale sono disponibili due diverse modalità:
- Modalità sorgente: una richiesta SCP nella modalità sorgente legge i file sul sistema di destinazione e li rimanda al client.
- Modalità sink: se nelle richieste effettuate tramite il protocollo SCP sul lato client viene utilizzata la modalità sink, questa segnala al sistema remoto che si tratta di dati in entrata, che devono essere scritti sul sistema.
In genere i client SCP utilizzano l’indicatore -f (per l’inglese from ”da“), per attivare la modalità sorgente. Se deve essere avviata la modalità sink per inoltrare dati all’host di destinazione, viene invece utilizzato l’indicatore -t (per l’inglese to “a“).
L’interazione tra Secure Copy e Secure Shell può essere interrotta da eventuali messaggi di benvenuto risultanti dal corretto accesso SSH. SCP non è preparato per tali messaggi di testo e li interpreta come un messaggio di errore bloccando quindi la trasmissione.
Dove e come viene utilizzato SCP?
Secure Copy è supportato da tutti i sistemi operativi comuni e offre con l’aggiunta di SSH un eccellente pacchetto di sicurezza. Grazie alla combinazione di autenticazione e crittografia è alla pari del popolare SFTP, che utilizza anche i meccanismi di protezione di Secure Shell. Poiché SCP si distingue dalla versione FTP protetta anche in termini di velocità di trasmissione, il protocollo è un’alternativa di prima classe se i file devono essere trasferiti in modo rapido e sicuro su un server web o se i dati sensibili devono essere distribuiti in una rete locale (ad esempio in una rete aziendale).
Nel 2019 il National Institute of Standards and Technology degli Stati Uniti ha pubblicato un rapporto di sicurezza ufficiale, che rivela punti deboli in varie applicazioni SCP. Al riguardo si tratta in particolare del rischio potenziale di un attacco man in the middle nell’ambito della trasmissione SCP, che consente agli hacker di sovrascrivere file nella directory di destinazione o di introdurre malware. I client interessati includono tra l’altro Putty PSCP, OpenSSH e WinSCP.
Oltre ai suddetti client, che è possibile scaricare e utilizzare gratuitamente dal web, MacOS, Windows e Linux hanno anche un client di Secure Copy integrato standard, chiamato “scp”. Il percorso tramite il prompt dei comandi o il terminale è quindi la soluzione più rapida e semplice per il trasferimento di dati tramite il protocollo SCP, come illustrano le due seguenti voci di esempio:
scp filesorgente test@host:directory/filedidestinazione
Con questo comando il rispettivo file sorgente viene copiato nella directory specificata sull’host di destinazione, a cui l’utente deve essere connesso con il nome "test" tramite SSH. Se un file deve essere trasferito da un sistema esterno all’utente SCP locale, il comando è il seguente:
scp test@host:directory/filesorgente filedidestinazione
I più importanti comandi SCP in sintesi
La sintassi di base dei comandi della riga di comando per il controllo del client SCP nativo in Windows e negli altri sistemi operativi è emersa chiaramente negli esempi precedenti. Tuttavia entrambi gli esempi di codice mostrano solo un semplice processo di copia senza opzioni aggiuntive, che lo strumento scp ha sicuramente da offrire. Se devono far parte di un comando, queste opzioni precedono le informazioni su file e host, di modo che la struttura sintattica completa si presenta come segue:
scp [opzione(i)] [filesorgente] [utente@host:directory/filedidestinazione]
scp [opzione(i)] [utente@host:directory/filesorgente] [filedidestinazione]
La seguente tabella riepiloga infine le opzioni più importanti per adattare le query di Secure Copy con scp:
Opzione scp | Funzione |
---|---|
-1 | Imposta l’utilizzo della versione 1 del protocollo SCP |
-2 | Imposta l’utilizzo della versione 2 del protocollo SCP |
-C | Attiva la compressione GZIP sulla connessione crittografata SSH |
-B | Avvia la sessione senza richiesta di password |
-l limit | Imposta un limite di larghezza di banda per il trasferimento di file (Kb/s) |
-o ssh_option | Consente di definire opzioni SSH specifiche come la crittografia |
-P port | Specifica la porta sul lato del sistema remoto, attraverso cui deve essere eseguita la connessione |
-p | Conserva le meta informazioni del file originale (come tempi di modifica e accesso) |
-q | Nasconde la barra di avanzamento durante il trasferimento |
-r | Copia l’intera directory in modo ricorsivo, ovvero includendo tutte le sottodirectory |
-S program | Specifica il programma da utilizzare per la connessione crittografata (il programma deve comprendere le opzioni SSH) |