Sikker filoverføring med SCP: Kommandoer og eksempler

Introduksjon til SCP

SCP er tett knyttet til SSH-protokollen, og dens opprinnelse ligger i det samme konseptet.

Som en utvidelse av SSH, sikrer SCP at data forblir konfidensielle og uendret under overføringen.

La oss først se nærmere på hvordan SCP fungerer, før vi går inn på praktisk bruk av scp-kommandoer.

Hva er SCP?

SCP står for Secure Copy Protocol.

Det er en sikker og effektiv metode for å kopiere filer og mapper mellom lokale og eksterne datamaskiner, eller mellom to eksterne systemer.

Det er mye brukt for sikker dataoverføring via et nettverk. SCP er avhengig av SSH (Secure Shell) for å etablere en trygg forbindelse og kryptere dataene under overføringen.

Enten det gjelder en enkel fil eller en hel katalog, gir SCP en pålitelig løsning for ekstern filoverføring.

Hvordan fungerer SCP?

SCP er bygget på toppen av SSH-protokollen – en kryptografisk nettverksprotokoll som sikrer fjernpålogging og kommandoutførelse. Den benytter de samme sikkerhetsmekanismene som SSH, inkludert kryptering og autentisering, for å beskytte data under overføring.

Når en bruker starter en kopieringskommando med SCP, spesifiserer de kildefilen og destinasjonen på en ekstern datamaskin. SCP oppretter deretter en SSH-forbindelse til det eksterne systemet og kopierer filene sikkert fra kilde til destinasjon.

Når bør du bruke SCP?

SCP er særlig nyttig i følgende tilfeller:

Sikkerhetskopiering av ekstern server

Med SCP kan du ta sikkerhetskopier av filer fra en ekstern server til din lokale maskin, eller motsatt, og dermed sikre dataredundans og gjenoppretting ved katastrofe.

Utrulling av applikasjoner

SCP forenkler prosessen med å trygt kopiere nødvendige filer til hvert målsystem når du distribuerer applikasjoner på tvers av flere servere.

Overføring av store filer

SCP er et pålitelig og sikkert alternativ for å overføre store filer som kan være for store for e-postvedlegg.

Sikker fildeling

SCP sørger for at dataene er kryptert under overføringen når konfidensielle filer sendes til andre.

Eksternt samarbeid

SCP kan brukes for å dele filer sikkert med samarbeidspartnere eller teammedlemmer på ulike lokasjoner.

SCP-kommandosyntaks

Før vi ser på hvordan du bruker SCP-kommandoen, la oss først se på den grunnleggende syntaksen.

SCP-kommandosyntaksen ser slik ut:

scp [alternativer] [kilde] [destinasjon]

Forklaring av syntaks

Alternativer:

Dette er valgfrie flagg som endrer hvordan SCP-kommandoen oppfører seg. Du kan tilpasse overføringsprosessen med ulike alternativer. Her er noen vanlige alternativer:

  • -r: Kopierer mapper og deres innhold rekursivt.
  • -p: Bevarer tillatelser, tidsstempler og moduser fra den opprinnelige filen.
  • -P: Angir portnummeret for SSH-tilkoblingen.
  • -i: Angir den private nøkkelfilen for SSH-autentisering.
  • -C: Bruker komprimering for å øke hastigheten på dataoverføringen.
  • -l: Begrenser båndbredden som brukes for overføringen (i Kbit/s).
  • -v: Utførlig modus – viser feilsøkingsmeldinger under overføring.
  • -o: Sender et alternativ til SSH-klienten. Kan brukes for å deaktivere streng vertsnøkkelkontroll.

Kilde:

Kilden spesifiserer filen eller mappen du ønsker å kopiere. Det kan være en lokal eller en ekstern sti, avhengig av situasjonen.

Mål:

Målet angir hvor du ønsker å kopiere kilden. I likhet med kilden, kan dette også være en lokal eller en ekstern sti.

Eksempler på kommandoer

1. Kopier en fil fra lokal til ekstern server

scp /sti/til/lokal/fil.txt bruker@eksternvert:/sti/til/destinasjon/

/sti/til/lokal/fil.txt: Dette er filen du vil kopiere fra din lokale maskin.

bruker@eksternvert: Erstatt bruker med brukernavnet på den eksterne serveren og eksternvert med vertsnavnet eller IP-adressen til den eksterne serveren.

/sti/til/destinasjon/: Dette er destinasjonsstien på den eksterne serveren der filen skal kopieres.

Eksempel

I dette tilfellet overfører jeg en fil til en ekstern server.

Ekstern brukernavn – abhishekvarma

Ekstern vertsadresse – 192.168.29.70

scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Ved tilkobling til en ekstern maskin vil den be om passordet. Her kopierer vi en zip-fil.

Resultat

Resultatet vil se omtrent slik ut hvis det ikke er noen feil ved tilkoblingen til den eksterne serveren.

sample.zip                                    100%   20KB  717.9KB/s   00:00

2. Kopier en fil fra den eksterne til den lokale maskinen

scp bruker@eksternvert:/sti/til/ekstern/fil.txt /sti/til/lokal/destinasjon/

Som i eksempelet over, erstatt bruker og ekstern vertsadresse.

Eksempel

scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Resultat

Dette er bare et eksempel på resultatet. Tidsstempelet varierer avhengig av tilkoblingshastigheten.

sample.zip                                    100%   20KB  51.2KB/s   00:00

3. Kopier en mappe rekursivt

scp -r bruker@eksternvert:/sti/til/ekstern/fil.txt /sti/til/lokal/destinasjon/

Her instruerer -r flagget SCP om å kopiere mapper rekursivt (inkludert undermapper og deres innhold).

Eksempel

scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop

Her spesifiserte jeg hele mappen for å kopiere filene.

Resultat

sample.zip                                         100%   20KB    1.0MB/s   00:00
Screenshot from 2023-08-13 21-45-23.png            100%   27KB    1.5MB/s   00:00
.swp                                               100%   12KB  894.2KB/s   00:00
.help.swp                                          100%   12KB  780.4KB/s   00:00

4. Kopier filer som matcher et mønster

scp /sti/til/lokal/*.txt bruker@eksternvert:/sti/til/destinasjon/

*.txt – Dette er et jokertegnmønster som matcher alle filer med filendelsen .txt i den angitte lokale mappen. Kilde- og destinasjonsstiene er de samme som før.

Eksempel

scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop

Resultat

Her har jeg brukt filendelsen .png.

Screenshot from 2023-08-13 21-45-23.png            100%   27KB    1.4MB/s   00:00
Screenshot from 2023-08-13 21-55-28.png            100%   24KB    1.7MB/s   00:00
Screenshot from 2023-08-13 22-04-03.png            100%   38KB    2.1MB/s   00:00

5. Bevar filattributter

scp -p /sti/til/lokal/fil.txt bruker@eksternvert:/sti/til/destinasjon/

Her bevarer -p flagget endringstider, tilgangstider og moduser fra kildefilen under kopiering.

Eksempel

scp -p /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Resultat

sample.zip                                         100%   20KB    420.0KB/s   00:00

6. Spesifiser en annen SSH-port

scp -P 22 /sti/til/lokal/fil.txt bruker@eksternvert:/sti/til/destinasjon/

-P flagget spesifiserer en annen SSH-port (22 i dette tilfellet) for SCP-tilkoblingen. Du kan bruke hvilken som helst port du ønsker.

Eksempel

scp -P 22 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Resultat

sample.zip                                         100%   20KB    1.2MB/s   00:00

7. Kopier med komprimering

scp -C /sti/til/lokal/fil.txt bruker@eksternvert:/sti/til/destinasjon/

-C flagget muliggjør komprimering under overføringen, noe som kan redusere størrelsen på de overførte dataene. Kilde- og destinasjonsadressen er de samme som forklart tidligere.

Eksempel

scp -C /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Resultat

sample.zip                                         100%   20KB    985.8KB/s   00:00

8. Utførlig utgang for feilsøking

scp -v /sti/til/lokal/fil.txt bruker@eksternvert:/sti/til/destinasjon/

-v alternativet aktiverer detaljert utgang, som gir mer detaljert informasjon under overføringsprosessen.

Eksempel

scp -v /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Resultat

Eksempelresultatet vil se omtrent slik ut.

Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
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.29.70 [192.168.29.70] port 22. debug1: Connection established.
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1

9. Kopier fra ekstern til lokal med detaljert utgang

scp -v bruker@eksternvert:/sti/til/ekstern/fil.txt /sti/til/lokal/destinasjon/

Samme forklaringer som det forrige utførlige eksempelet, men med de lokale og eksterne stedene omvendt.

Eksempel

scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Resultat

Resultatet vil se omtrent slik ut.

Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established.
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1

10. Kopier med en annen SSH-nøkkel

scp -i /sti/til/privat_nøkkel.pem /sti/til/lokal/fil.txt bruker@eksternvert:/sti/til/destinasjon/

-i /sti/til/privat_nøkkel.pem flagget spesifiserer en annen privat SSH-nøkkel for autentisering.

Eksempel

scp -i /sti/til/privat_nøkkel.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Resultat

Hvis du har en privat nøkkel kan du bruke den, ellers kan du bruke standardnøkkelen.

sample.zip                                         100%   20KB    1.1MB/s   00:00

11. Kopier flere filer til den eksterne serveren

scp fil1.txt fil2.txt bruker@eksternvert:/sti/til/destinasjon/

Denne kommandoen kopierer fil1.txt og fil2.txt fra den lokale mappen til den angitte destinasjonen på den eksterne serveren.

Eksempel

scp  /home/vboxuser/Desktop/image.png  /home/vboxuser/Desktop/sample.zip  [email protected]:/Users/abhishekvarma/Desktop

Resultat

image.png                                          100%   39KB    1.4MB/s   00:00
sample.zip                                         100%   20KB    1.5MB/s   00:00

12. Kopier en ekstern fil med et annet navn

scp bruker@eksternvert:/sti/til/ekstern/fil.txt /sti/til/lokal/nyttfilnavn.txt

Denne kommandoen kopierer fil.txt fra den eksterne serveren til den lokale mappen og gir den nytt navn nyttfilnavn.txt i prosessen.

Eksempel

scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip

Resultat

De gamle og nye filtypene må være de samme når du utfører denne kommandoen.

sample.zip                                         100%   20KB    28.7KB/s   00:00

13. Kopiering med spesifikk båndbreddegrense

scp -l 1000 /sti/til/lokal/fil.txt bruker@eksternvert:/sti/til/destinasjon/

-l flagget spesifiserer en båndbreddegrense i Kbps (1000 Kbps i dette tilfellet) for overføringen.

Eksempel

scp -l 300 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Resultat

sample.zip                                         100%   20KB    31.3KB/s   00:00

14. Kopiere filer og bevare symbolske lenker

scp -rp /sti/til/lokal/kilde/ bruker@eksternvert:/sti/til/destinasjon/

-p flagget bevarer filattributter og -r flagget kopierer mapper rekursivt. Denne kommandoen bevarer også symbolske lenker under kopieringen.

Eksempel

scp -rp /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop

Resultat

image.png                                        100%   39KB    1.8MB/s   00:00

15. Kopiere filer utførlig med komprimering

scp -vC /sti/til/lokal/fil.txt bruker@eksternvert:/sti/til/destinasjon/

Denne kommandoen kombinerer både detaljert utdata (-v) og komprimering (-C) under filoverføringen.

Eksempel

scp -vC /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop

Resultat

Resultatet vil se omtrent slik ut.

scp: debug1: fd 3 clearing O_NONBLOCK
Sending file modes: C0664 40050 image.png
Sink: C0664 40050 image.png
image.png
d 6 clearing O_NONBLOCK
scp: debug1: fd • clearing O_NONBLOCK
image.png
debug1: client_input_channel_req: channel ✪ type exit-status reply debug1: channel 0: free: client-session, channels 1
Transferred: sent 40220, received 2576 bytes, in 0.1 seconds
Bytes per second: sent 352570.0, received 22581.3
root@ubuntu: ~
debug1: Exit status 0
debug1: compress outgoing: raw data 40287, compressed 38198, factor 0.95 debug1