SCP Linux Command - Sikker overføring av filer i Linux


Linux-administratorer bør være kjent med kommandolinjemiljøet. Siden GUI (Graphical User Interface)-modus i Linux-servere ikke er vanlig å installere.

SSH kan være den mest populære protokollen for å gjøre det mulig for Linux-administratorer å administrere serverne på en ekstern sikker måte. Innebygd med SSH-kommandoen er det SCP-kommandoen, som brukes til å kopiere fil(er) mellom servere på en sikker måte.

Grunnleggende syntaks for SCP-kommando

Kommandoen nedenfor vil leses som kopi "kildefilnavn" til "destinasjonsmappe" ved "destinasjonsvert" ved å bruke "brukernavn " regnskap.

scp source_file_name username@destination_host:destination_folder

Det er mange parametere i SCP-kommandoen som du kan bruke. Her er parametrene som kan brukes på daglig basis.

Sikker overføring av filer i Linux

Den grunnleggende SCP-kommandoen uten parametere vil kopiere filene i bakgrunnen. Brukere vil ikke se noe med mindre prosessen er fullført eller en feil vises.

Du kan bruke «-v»-parameteren til å skrive ut feilsøkingsinformasjon på skjermen. Det kan hjelpe deg med å feilsøke tilkoblings-, autentiserings- og konfigurasjonsproblemer.

Kopier fil fra lokal vert til ekstern server

Følgende kommando kopierer filen "scp-cheatsheet.pdf" fra et lokalt til et eksternt Linux-system under /home/tecmint-katalogen.

scp -v scp-cheatsheet.pdf [email :/home/tecmint/.

Eksempelutdata:

Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -t /home/tecmint/.
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_xmss type -1
...

Kopier fil fra ekstern vert til lokal vert

Følgende kommando kopierer en fil "ssh-cheatsheet.pdf" fra en ekstern vert til et lokalt system under katalogen /home/tecmint.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf /home/tecmint/.

Eksempelutdata:

Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -f /home/ravi/ssh-cheatsheet.pdf
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
...

Kopier fil fra ekstern vert til en annen vert

Følgende kommando kopierer en fil «ssh-cheatsheet.pdf» fra en ekstern vert til et annet eksternt vertssystem i katalogen /home/tecmint.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf [email :/home/anusha/.

Kopier filer med original opprettelsesdato og -klokkeslett

«-p»-parameteren vil bevare filenes originale modifikasjons- og tilgangstider mens filer kopieres sammen med anslått tid og tilkoblingshastighet vil vises på skjermen.

scp -p scp-cheatsheet.pdf [email :/home/tecmint/.

Eksempelutdata:

[email 's password: 
scp-cheatsheet.pdf                                                                                                                                                                 100%  531   721.4KB/s   00:00    

Scp-komprimering mens du kopierer filer

En av parameterne som kan gjøre filoverføringen raskere er parameteren "-C", som brukes til å komprimere filene dine mens du er på farten. Det unike er at komprimering kun skjer i nettverket. Når filen har ankommet målserveren, vil den gå tilbake til den opprinnelige størrelsen som før komprimeringen skjedde.

Ta en titt på disse kommandoene. Den bruker en enkelt fil på 93 Mb.

scp -pv messages.log [email :.

Eksempelutdata:

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t.
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email 's password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: Sending command: scp -v -p -t.
File mtime 1323853868 atime 1380425711
Sending file timestamps: T1323853868 0 1380425711 0
messages.log 100% 93MB 58.6KB/s 27:05
Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds
Bytes per second: sent 58758.4, received 15.6
debug1: Exit status 0

Kopiering av filer uten «-C»-parameteren vil resultere i 1661,3 sekunder. Du kan sammenligne resultatet med kommandoen nedenfor ved å bruke "-C" parameteren.

scp -Cpv messages.log [email :.

Eksempelutdata:

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t.
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email 's password:
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: channel 0: new [client-session]
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380428748
Sending file timestamps: T1323853868 0 1380428748 0
Sink: T1323853868 0 1380428748 0
Sending file modes: C0600 97517300 messages.log
messages.log 100% 93MB 602.7KB/s 02:38
Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds
Bytes per second: sent 54813.9, received 97.0
debug1: Exit status 0
debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09
debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48

Som du kan se, når du bruker komprimering, gjøres overføringsprosessen på 162,5 sekunder. Det er 10 ganger raskere enn å ikke bruke «-C»-parameteren. Hvis du kopierer mange filer over nettverket, vil parameteren "-C" hjelpe deg med å redusere den totale tiden du trenger.

Det vi bør legge merke til er at komprimeringsmetoden ikke vil fungere på noen filer. Når kildefilen allerede er komprimert, vil du ikke finne noen forbedring der. Filer som .zip, .rar, pictures og .iso-filer vil ikke bli påvirket av " -C” parameter.

Endre SCP Chiffer til Krypter filer

Som standard bruker SCP «AES-128» for å kryptere filer. Hvis du vil bytte til et annet chiffer for å kryptere det, kan du bruke parameteren «-c».

Ta en titt på denne kommandoen.

scp -c 3des Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Kommandoen ovenfor forteller SCP å bruke 3des-algoritmen for å kryptere filen. Vær forsiktig med at denne parameteren bruker "-c" ikke "-C".

Begrens båndbreddebruk med SCP-kommando

En annen parameter som kan være nyttig er parameteren "-l". «-l»-parameteren vil begrense båndbredden som skal brukes. Det vil være nyttig hvis du gjør et automatiseringsskript for å kopiere mange filer, men du vil ikke at båndbredden skal tappes av SCP-prosessen.

scp -l 400 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 50.3KB/s 01:13

400-verdien bak «-l»-parameteren betyr at vi begrenser båndbredden for SCP-prosessen til bare 50 KB/ sek.

En ting å huske er at båndbredden er spesifisert i kilobit/sek (kbps). Det betyr at 8 bits er lik 1 byte.

Mens SCP teller i Kilobyte/sek (KB/s). Så hvis du vil begrense båndbredden til et SCP maksimum på bare 50 KB/s, må du sette den til 50 x 8=400.

SCP med en annen port

Vanligvis bruker SCP port 22 som standardport, men av sikkerhetsgrunner kan du endre porten til en annen port. For eksempel bruker vi port 2249.

Da skal kommandoen være slik.

scp -P 2249 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 262.3KB/s 00:14

Pass på at den bruker stor «P» ikke «p» siden «p» allerede er brukt for bevarte tider og moduser.

SCP – Kopier filer og kataloger rekursivt

Noen ganger må vi kopiere katalogen og alle filer/kataloger i den. Det vil være bedre hvis vi kan gjøre det i en enkelt kommando ved å bruke parameteren "-r", som kopierer hele katalogen rekursivt.

scp -r documents [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
scp.txt 100% 10KB 9.8KB/s 00:00

Når kopieringsprosessen er fullført, vil du på målserveren finne en katalog som heter «dokumenter» med alle filene. Mappen «dokumenter» opprettes automatisk.

SCP – Deaktiver fremdriftsmeldinger

Hvis du velger å ikke se fremdriftsmåleren og advarsler/diagnosemeldinger fra SCP, kan du deaktivere den ved å bruke «-q»-parameteren. Her er et eksempel.

scp -q Label.pdf [email :.

[email 's password:
pungki@mint ~/Documents $

Som du kan se, etter at du har skrevet inn passordet, er det ingen informasjon om SCP-prosessen. Etter at prosessen er fullført, vil du se en melding igjen.

SCP – Kopier filer med proxy

Proxyserveren brukes vanligvis i kontormiljøet. Naturligvis er SCP ikke en proxy-konfigurert. Når miljøet ditt bruker en proxy, må du "fortelle" SCP for å kommunisere med proxyen.

Her er scenariet. Proxy-adressen er 10.0.96.6 og proxy-porten er 8080. Proxyen implementerte også brukerautentisering. Først må du opprette filen «~/.ssh/config». For det andre legger du denne kommandoen i den.

ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth

Deretter må du lage filen «~/.ssh/proxyauth» som inneholder.

myusername:mypassword

Etter det kan du gjøre SCP transparent som vanlig.

Vær oppmerksom på at korketrekkeren kanskje ikke er installert på systemet ditt ennå. På min Linux Mint må jeg installere den først, ved å bruke standard Linux Mint installasjonsprosedyre.

apt-get install corkscrew

For andre yum-baserte systemer kan brukere installere korketrekker ved å bruke følgende yum-kommando.

yum install corkscrew

En annen ting er at siden «~/.ssh/proxyauth»-filen inneholder «brukernavn» og «passord» i klartekstformat , sørg for at filen kun er tilgjengelig for deg.

Velg en annen ssh_config-fil

For mobilbrukere som ofte bytter mellom bedriftsnettverk og offentlige nettverk, vil det være lidende å alltid endre innstillinger i SCP. Det er bedre om vi kan sette inn en annen ssh_config-fil for å matche våre behov.

Proxy brukes i bedriftens nettverk, men ikke i det offentlige nettverket, og du bytter regelmessig nettverk.

scp -F /home/pungki/proxy_ssh_config Label.pdf

[email :.
[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Som standard vil «ssh_config»-filen per bruker bli plassert i «~/.ssh/config». Å lage en spesifikk «ssh_config»-fil med proxy-kompatibilitet vil gjøre det enklere å bytte mellom nettverk.

Når du er på bedriftens nettverk, kan du bruke parameteren "-F". Når du er på et offentlig nettverk, kan du hoppe over parameteren «-F».

Det handler om SCP. Du kan se man-sider til SCP for mer detaljer. Legg gjerne igjen kommentarer og forslag.