Introduzione
SCP (Protocollo di copia sicura) è un protocollo di rete utilizzato per copiare in modo sicuro file/cartelle tra sistemi Linux (Unix) su una rete. Per trasmettere, usa il scp
utilità della riga di comando, una variante più sicura del comando cp (copia).
SCP protegge i tuoi dati durante la copia su una connessione SSH (Secure Shell) crittografando i file e le password. Pertanto, anche se il traffico viene intercettato, le informazioni sono comunque crittografate.
Usa SCP quando:
- Copiare file da un host locale a un host remoto.
- Copiare file da un host remoto a un host locale.
- Copiare file tra due server remoti.
Questa guida mostra come copiare i file utilizzando il comando SCP e include 13 esempi del comando utilizzato nella pratica .
Prerequisiti
- Un accesso sicuro alla shell sul server
- (opzionale) Accesso root sia sul client che sul server
- Un accesso sicuro alla shell sul sistema server
Sintassi del comando SCP
La sintassi per l'utilizzo di scp
il comando è:
scp [option] [[email protected]_host:path/to/source/file] [[email protected]_host:target/path]
Se ometti:
- il nome_utente dell'host (o della destinazione), il comando viene impostato automaticamente sull'utente corrente.
- il percorso/alla/sorgente (o il obiettivo/percorso ) dal comando, il programma cerca (o copia) il file in locale.
Quando si lavora con file remoti, specificare sempre le specifiche dell'utente e dell'host.
Assicurati di utilizzare un account con accesso in lettura ai file che desideri copiare sul sistema di origine. Inoltre, devi utilizzare un account con accesso in scrittura alla directory in cui i file verranno salvati sul sistema di destinazione.
Opzioni comando SCP
Puoi aggiungere molti scp
opzioni di comando al comando per personalizzare e velocizzare il processo. Le opzioni vengono aggiunte come attributi subito dopo il scp
comando.
Ciascuna opzione ha una forma breve di un carattere e un equivalente descrittivo più lungo.
-1 | Utilizza il protocollo 1. |
-2 | Usa il protocollo 2. |
-4 | Usa solo indirizzi Ipv4. |
-6 | Utilizza solo indirizzi IPv6. |
-B | Esegui in modalità batch, disabilitando tutte le query per l'input dell'utente. |
-b buffer_size | Specificare la dimensione del buffer utilizzata per il trasferimento dei dati. Se non specificato, utilizza il valore predefinito - 32768 byte. |
-C | Abilita compressione. |
-c cipher | Seleziona la cifra per la crittografia dei dati. Se non specificato, SCP utilizza l'impostazione predefinita - "AnyStdCipher". |
-D debug_level | Imposta il livello di debug (1, 2, 3 o 99). |
-d | Copia il file, solo se la directory di destinazione esiste già. |
-F file | Specifica un file di configurazione alternativo per SSH . |
-h | Mostra un elenco di opzioni di comando. |
-i file | Specificare il file da cui leggere l'identità per l'autenticazione a chiave pubblica. |
-l limit | Limitare la larghezza di banda (specificare il limite in Kbit/s). |
-o ssh_option | Imposta le opzioni su SSH nel formato ssh_config. |
-P port | Specificare la porta a cui connettersi. Se non specificato, SCP utilizza la porta 22. |
-q | Esegui SCP in modalità silenziosa. |
-Q | Disabilita la visualizzazione di eventuali statistiche di trasferimento file. |
-r | Copia ricorsivamente. |
-S program | Utilizzare un programma specifico per la connessione di crittografia. |
-u | Elimina il file sorgente una volta completata la copia. |
-v | Abilita la modalità dettagliata, che imposta il livello di debug su 2. |
Esempi di comandi SCP
Per comprendere meglio questa utile utilità, dai un'occhiata al seguente scp
esempi di comandi.
Copia un file da un server locale a un server remoto
Nell'esempio seguente, copiamo un file di esempio da un host locale a un server remoto:
scp Desktop/sample_example.txt [email protected]:/home/remote_dir
Il comando include le seguenti informazioni:
Desktop/sample_example.txt
- il nome del file da copiare e la sua posizione.[email protected]
- il nome utente e l'indirizzo IP del server remoto./home/remote_dir
– la posizione in cui archiviare il file copiato.
Copia un file da un server remoto all'host locale
Per copiare un file di esempio da un host remoto a un host locale, eseguiamo:
scp 147.182.143.27:/home/remote_dir/sample_example.txt home/Desktop
Le informazioni fornite sono
[email protected]
- il nome utente e l'indirizzo IP del server remoto da cui si trova attualmente il file./home/remote_dir/sample_example.txt
- il nome del file da copiare e la sua posizione.home/Desktop
– la posizione in cui archiviare il file copiato.
Copia un file da un server remoto a un altro
Successivamente, vediamo come copiare un file da un server remoto a un altro server remoto utilizzando il scp
comando:
scp [email protected]:/home/remote_dir/sample_example.txt [email protected]:home/Desktop
Il comando sopra specifica:
[email protected]
- il nome utente e l'indirizzo IP del server remoto da cui si trova attualmente il file./home/remote_dir/sample_example.txt
- il nome del file da copiare e la sua posizione.[email protected]
– il nome utente e l'indirizzo IP del server remoto su cui vogliamo copiare il file.home/Desktop
– la posizione in cui archiviare il file copiato sul server remoto.
Copia più file con SCP
SCP consente di copiare più file in un unico comando. Ad esempio, il comando seguente copia due file da un host locale a un server remoto:
scp example/sample1.txt example/sample2.txt [email protected]:/home/remote_dir
Include le seguenti informazioni:
example/sample1.txt
– il nome e la posizione del primo file da copiare.example/sample2.txt
– il nome e la posizione del secondo file da copiare.[email protected]
- il nome utente e l'indirizzo IP del server remoto che riceve i file./home/remote_dir
- la posizione in cui archiviare i file copiati sul server remoto.
Copia una cartella dall'host locale al server remoto in modo ricorsivo
Oltre ai file, scp
può anche copiare in modo sicuro cartelle su o da server remoti. Il comando seguente mostra come copiare ricorsivamente una directory di esempio su un server remoto:
scp -r example [email protected]:/home/remote_dir
Il comando include:
-r
– l'opzione per copiare ricorsivamente la cartella.example
– il nome della cartella che viene copiata dal server locale.[email protected]
- il nome utente e l'indirizzo IP del server remoto che riceve la cartella./home/remote_dir
- la posizione in cui memorizzare la cartella copiata sul server remoto.
Copia un file con SCP utilizzando una porta specifica
Per impostazione predefinita, SCP utilizza la porta 22. Tuttavia, se un sistema remoto è configurato per ascoltare le richieste SSH su una porta diversa, utilizzare il –P
passare per specificare la porta.
Ad esempio, il comando seguente copia un file da un server locale a un server remoto, utilizzando la porta 2222:
scp -P 2222 Desktop/sample_example.txt [email protected]:/home/remote_dir
I componenti del comando sopra sono:
-P 2222
– usa la porta 2222.Desktop/sample_example.txt
- il nome del file che vuoi copiare e la sua posizione.[email protected]
- il nome utente e l'indirizzo IP del server remoto che riceve il file./home/remote_dir
- la posizione in cui archiviare il file copiato sul server remoto.
Copia un file con SCP in modalità silenziosa
Esecuzione di un scp
comando in modalità silenziosa significa disabilitare la barra di avanzamento e la visualizzazione dei messaggi di non errore nell'output. Per farlo, devi aggiungere il -q
opzione:
scp -q Desktop/sample_example.txt [email protected]:/home/remote_dir
Copia un file con SCP in modalità dettagliata
Puoi eseguire scp
in modalità dettagliata aggiungendo il -v
opzione che imposta il livello di debug su 2. In questo modo, stampa le informazioni di debug nell'output che possono aiutarti durante la risoluzione dei problemi.
Aggiungi il -v
opzione dopo scp
per abilitare la modalità dettagliata, come nell'esempio seguente:
scp -v Desktop/sample_example.txt [email protected]:/home/remote_dir
Copia un file con SCP e Limita larghezza di banda
Un'altra opzione utile è limitare la larghezza di banda utilizzata da scp
comando aggiungendo il -l
parametro. Ciò è particolarmente utile quando si copiano file di grandi dimensioni per evitare che SCP prosciughi la larghezza di banda.
Quando si limita la larghezza di banda, è necessario specificare il numero in Kilobit/s. Tieni presente che 1 byte =8 bit. Pertanto, se si desidera limitare la larghezza di banda per SCP a 100 KB/s, il valore per l in kbps sarebbe 800 (100 x 8), come nel comando seguente:
scp -l 800 Desktop/sample_example.txt [email protected]:/home/remote_dir
Copia un file con SCP Faster
Per velocizzare il trasferimento di file da un server all'altro, aggiungi il -C
opzione che comprime il file durante il trasferimento. Una volta che il file raggiunge la sua destinazione, torna alla sua dimensione normale.
scp -C Desktop/sample_example.txt [email protected]:/home/remote_dir
Copiare un file con SCP utilizzando un codice specifico
Per impostazione predefinita, SCP utilizza AES-128 per crittografare i file. Tuttavia, il -c
l'opzione consente di modificare la cifra che SCP utilizzerà per crittografare il file.
Ad esempio, per aumentare la sicurezza, puoi passare alla crittografia 3des, come nell'esempio seguente:
scp -c 3des Desktop/sample_example.txt [email protected]:/home/remote_dir
Copia un file con SCP utilizzando IPv4 o IPv6
Puoi forzare SCP a utilizzare solo IPv4 o IPv6 a seconda delle tue esigenze aggiungendo -4 o -6 attributo.
Per copiare un file di esempio da un server locale a un host remoto utilizzando solo IPv6, eseguire:
scp -6 Desktop/sample_example.txt [email protected]:/home/remote_dir
Copiare un file con SCP Preserving File Attributes
Per copiare un file utilizzando SCP e conservarne gli attributi come modifica e tempi di accesso, modalità e autorizzazioni, utilizza il -p
opzione:
scp -p Desktop/sample_example.txt [email protected]:/home/remote_dir