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