SCP, ett protokoll för säker filöverföring, har sin grund i samma koncept som det välkända SSH-protokollet.
En viktig egenskap hos SCP är att all data som överförs skyddas med kryptering och integritet, tack vare dess integration med SSH. Det innebär att informationen inte bara är konfidentiell utan också oförändrad under överföringen.
Innan vi dyker ner i praktiska exempel, är det bra att förstå hur SCP fungerar i grunden. Därefter kommer vi att utforska olika kommandon relaterade till SCP.
Vad är SCP?
SCP, som står för Secure Copy Protocol, är en teknik för säker filkopiering.
Det möjliggör överföring av filer och kataloger mellan olika system – antingen lokala och fjärranslutna datorer eller mellan två fjärrdatorer. Processen är både säker och effektiv.
SCP är en vanlig metod för att skicka information på ett säkert sätt över nätverk. Det bygger på SSH (Secure Shell) för att upprätta en krypterad anslutning och säkerställa dataskydd under överföringen.
Oavsett om du behöver flytta en enskild fil eller en hel mappstruktur, är SCP en pålitlig metod för filöverföring över nätverket.
Hur fungerar SCP?
SCP är konstruerat ovanpå SSH-protokollet, som är ett kryptografiskt nätverksprotokoll för säker fjärrinloggning och fjärrkommandoexekvering. Det använder samma säkerhetsmekanismer som SSH, inklusive kryptering och autentisering, för att skydda data under överföring.
När en användare initierar ett SCP-kommando på sin lokala dator, specificeras källfilen och destinationsplatsen på fjärrdatorn. SCP etablerar sedan en SSH-anslutning till fjärrsystemet och kopierar filerna säkert från källan till destinationen.
När ska man använda SCP?
SCP är särskilt användbart i följande situationer:
Säkerhetskopiering av fjärrservrar
SCP är utmärkt för att göra säkerhetskopior av filer från en fjärrserver till din lokala dator eller tvärtom. Detta säkerställer redundans och ger möjlighet till återställning vid eventuella problem.
Distribution av applikationer
När applikationer ska distribueras på flera servrar, förenklar SCP processen genom att säkert kopiera de nödvändiga filerna till varje målserver.
Överföring av stora filer
SCP är ett pålitligt och säkert alternativ för att överföra stora filer, särskilt de som är för stora för att skickas via e-post.
Säker fildelning
Med SCP kan du dela konfidentiella filer med andra på ett säkert sätt, eftersom datan förblir krypterad under hela överföringsprocessen.
Fjärrsamarbete
SCP är praktiskt för att säkert dela filer med kollegor eller gruppmedlemmar på olika platser.
SCP-kommandosyntax
Innan vi börjar utforska hur SCP-kommandot används, låt oss först titta på den grundläggande syntaxen:
scp [alternativ] [källa] [destination]
En förklaring av syntaxen:
Alternativ
Dessa är valfria flaggor som ändrar hur SCP-kommandot fungerar. Du kan använda olika alternativ för att anpassa överföringsprocessen. Här är några vanliga alternativ:
-r: Kopierar kataloger och deras innehåll rekursivt.
-p: Bevarar originalfilens behörigheter, tidsstämplar och lägen.
-P: Anger portnumret för SSH-anslutningen.
-i: Anger den privata nyckelfilen för SSH-autentisering.
-C: Använder komprimering för snabbare dataöverföring.
-l: Begränsar bandbredden som används för överföringen (i kbit/s).
-v: Utförligt läge – visar felsökningsmeddelanden under överföringen.
-o: Skickar ett alternativ till SSH-klienten. Det kan användas för att inaktivera strikt värdnyckelkontroll.
Källa
Källan anger filen eller katalogen som du vill kopiera. Den kan vara en lokal eller fjärransluten sökväg, beroende på sammanhanget.
Destination
Destinationen anger vart du vill kopiera källan. Precis som källan, kan den vara en lokal eller fjärransluten sökväg.
Kommandoexempel
#1. Kopiera en fil från lokal till fjärrserver
scp /sökväg/till/lokal/fil.txt användare@fjärrvärd:/sökväg/till/destination/
/sökväg/till/lokal/fil.txt: Det här är den lokala filen som du vill kopiera.
användare@fjärrvärd: Byt ut ’användare’ mot fjärranvändarens namn och ’fjärrvärd’ mot värdnamnet eller IP-adressen för fjärrservern.
/sökväg/till/destination/: Det här är målsökvägen på fjärrservern där filen ska kopieras.
Exempel:
I det här exemplet har jag valt en fjärrserver för att överföra filen.
Fjärrvärds användarnamn – abhishekvarma
Fjärrvärdsadress – 192.168.29.70
scp /home/vboxuser/Skrivbord/sample.zip [email protected]:/Users/abhishekvarma/Skrivbord
När anslutningen till fjärrdatorn är upprättad, kommer du att bli ombedd att ange lösenordet. I detta fall har jag valt att kopiera en zip-fil.
Resultat:
Om det inte uppstår några fel vid anslutning till fjärrservern, kommer resultatet att se ut ungefär så här:
sample.zip 100% 20KB 717.9KB/s 00:00
#2. Kopiera en fil från fjärrservern till den lokala maskinen
scp användare@fjärrvärd:/sökväg/till/fjärr/fil.txt /sökväg/till/lokal/destination/
Som i exemplet ovan, byt ut användarnamnet och fjärrvärdsadressen.
Exempel:
scp [email protected]:/Users/abhishekvarma/Skrivbord/sample.zip /home/vboxuser/Skrivbord
Resultat:
Detta är endast ett exempel. Tidsstämplarna varierar beroende på anslutningshastigheten.
sample.zip 100% 20KB 51.2KB/s 00:00
#3. Kopiera en katalog rekursivt
scp användare@fjärrvärd:/sökväg/till/fjärr/fil.txt /sökväg/till/lokal/destination/
Här instruerar ’-r’-flaggan SCP att kopiera kataloger rekursivt, inklusive underkataloger och deras innehåll.
Exempel:
scp -r /home/vboxuser/Skrivbord [email protected]:/Users/abhishekvarma/Skrivbord
Här har jag angett hela katalogen för att kopiera alla filer.
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. Kopiera filer som matchar ett mönster
scp /sökväg/till/lokal/*.txt användare@fjärrvärd:/sökväg/till/destination/
*.txt – Det här är ett jokerteckenmönster som matchar alla filer med filändelsen .txt i den angivna lokala katalogen. Käll- och destinationsvägarna är desamma som tidigare.
Exempel:
scp /home/vboxuser/Skrivbord/locfolder/*.png [email protected]:/Users/abhishekvarma/Skrivbord
Resultat:
Här har jag använt filändelsen .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. Bevara filattribut
scp -p /sökväg/till/lokal/fil.txt användare@fjärrvärd:/sökväg/till/destination/
Här bevarar ’-p’-flaggan ändringstider, åtkomsttider och lägen för källfilen under kopieringen.
Exempel:
scp -p /home/vboxuser/Skrivbord/sample.zip [email protected]:/Users/abhishekvarma/Skrivbord
Resultat:
sample.zip 100% 20KB 420.0KB/s 00:00
#6. Ange en annan SSH-port
scp -P 22 /sökväg/till/lokal/fil.txt användare@fjärrvärd:/sökväg/till/destination/
Flaggan ’-P’ specificerar en annan SSH-port (22 i detta fall) för SCP-anslutningen. Du kan använda vilken port du vill.
Exempel:
scp -P 22 /home/vboxuser/Skrivbord/sample.zip [email protected]:/Users/abhishekvarma/Skrivbord
Resultat:
sample.zip 100% 20KB 1.2MB/s 00:00
#7. Kopiera med komprimering
scp -C /sökväg/till/lokal/fil.txt användare@fjärrvärd:/sökväg/till/destination/
Flaggan ’-C’ aktiverar komprimering under överföringen, vilket kan minska storleken på den överförda datan. Käll- och destinationsadresserna är desamma som tidigare.
Exempel:
scp -C /home/vboxuser/Skrivbord/sample.zip [email protected]:/Users/abhishekvarma/Skrivbord
Resultat:
sample.zip 100% 20KB 985.8KB/s 00:00
#8. Utförlig utdata för felsökning
scp -v /sökväg/till/lokal/fil.txt användare@fjärrvärd:/sökväg/till/destination/
Alternativet ’-v’ aktiverar en utförlig utdata, som ger mer detaljerad information under överföringsprocessen.
Exempel:
scp -v /home/vboxuser/Skrivbord/sample.zip [email protected]:/Users/abhishekvarma/Skrivbord
Resultat:
Ett exempel på hur utdata kan se ut:
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -t /Users/abhishekvarma/Skrivbord 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. Kopiera från fjärrserver till lokal dator med utförlig utdata
scp -v användare@fjärrvärd:/sökväg/till/fjärr/fil.txt /sökväg/till/lokal/destination/
Samma förklaringar som i det tidigare utförliga exemplet, med de lokala och fjärranslutna platserna omvända.
Exempel:
scp -v [email protected]:/Users/abhishekvarma/Skrivbord/sample.zip /home/vboxuser/Skrivbord
Resultat:
Utdata kommer att se ut ungefär så här:
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -f /Users/abhishekvarma/Skrivbord/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. Kopiera med en annan SSH-nyckel
scp -i /sökväg/till/privat_nyckel.pem /sökväg/till/lokal/fil.txt användare@fjärrvärd:/sökväg/till/destination/
Flaggan ’-i /sökväg/till/privat_nyckel.pem’ specificerar en annan privat SSH-nyckel för autentisering.
Exempel:
scp -i /sökväg/till/privat_nyckel.pem /home/vboxuser/Skrivbord/sample.zip [email protected]:/Users/abhishekvarma/Skrivbord
Resultat:
Om du har en privat nyckel, kan du använda den. Annars kan du använda standardnyckeln.
sample.zip 100% 20KB 1.1MB/s 00:00
#11. Kopiera flera filer till fjärrservern
scp fil1.txt fil2.txt användare@fjärrvärd:/sökväg/till/destination/
Detta kommando kopierar fil1.txt och fil2.txt från den lokala katalogen till den angivna destinationen på fjärrservern.
Exempel:
scp /home/vboxuser/Skrivbord/bild.png /home/vboxuser/Skrivbord/sample.zip [email protected]:/Users/abhishekvarma/Skrivbord
Resultat:
bild.png 100% 39KB 1.4MB/s 00:00 sample.zip 100% 20KB 1.5MB/s 00:00
#12. Kopiera en fjärrfil med ett annat namn
scp användare@fjärrvärd:/sökväg/till/fjärr/fil.txt /sökväg/till/lokal/nyttfilnamn.txt
Detta kommando kopierar fil.txt från fjärrservern till den lokala katalogen och byter namn till nyttfilnamn.txt under processen.
Exempel:
scp [email protected]:/Users/abhishekvarma/Skrivbord/sample.zip /home/vboxuser/Skrivbord/nyfil.zip
Resultat:
De gamla och nya filändelserna bör vara desamma när du kör detta kommando.
sample.zip 100% 20KB 28.7KB/s 00:00
#13. Kopiering med specifik bandbreddsgräns
scp -l 1000 /sökväg/till/lokal/fil.txt användare@fjärrvärd:/sökväg/till/destination/
Flaggan ’-l’ specificerar en bandbreddsgräns i Kbps (1000 Kbps i det här fallet) för överföringen.
Exempel:
scp -l 300 /home/vboxuser/Skrivbord/sample.zip [email protected]:/Users/abhishekvarma/Skrivbord
Resultat:
sample.zip 100% 20KB 31.3KB/s 00:00
#14. Kopiera filer och bevara symboliska länkar
scp -rp /sökväg/till/lokal/källa/ användare@fjärrvärd:/sökväg/till/destination/
Flaggan ’-p’ bevarar filattribut och ’-r’-flaggan kopierar kataloger rekursivt. Detta kommando bevarar även symboliska länkar under kopieringen.
Exempel:
scp -rp /home/vboxuser/Skrivbord/bild.png [email protected]:/Users/abhishekvarma/Skrivbord
Resultat:
bild.png 100% 39KB 1.8MB/s 00:00
#15. Kopiera filer utförligt med komprimering
scp -vC /sökväg/till/lokal/fil.txt användare@fjärrvärd:/sökväg/till/destination/
Detta kommando kombinerar både utförlig utdata (-v) och komprimering (-C) under filöverföringen.
Exempel:
scp -vC /