SCP er tæt beslægtet med SSH-protokollen og blev faktisk født ud fra den samme idé.
SCP sørger for, at data forbliver fortrolige og umanipulerede under transit som en udvidelse af SSH-protokollen.
Lad os først forstå, hvordan denne SCP fungerer, og så vil vi se scp-kommandoerne.
Indholdsfortegnelse
Hvad er SCP?
SCP står for Secure Copy Protocol.
Det er en sikker og effektiv metode til at kopiere filer og mapper mellem lokale og eksterne værter eller mellem to fjernværter.
Det er meget brugt til sikker overførsel af data over et netværk. SCP er afhængig af SSH (Secure Shell) til at etablere en sikker forbindelse og kryptere dataene under transit.
Uanset om du skal flytte en enkelt fil eller en hel mappe, tilbyder SCP en pålidelig løsning til fjernoverførsler af fil.
Hvordan virker SCP?
SCP er bygget oven på SSH-protokollen – som er en kryptografisk netværksprotokol til sikker fjernlogin og kommandoudførelse. Den bruger de samme sikkerhedsmekanismer som SSH, inklusive kryptering og autentificering, for at beskytte data under transmission.
Når du bruger SCP, starter en bruger en kopikommando på deres lokale maskine, der angiver kildefilen og destinationsplaceringen på en fjernmaskine. SCP etablerer en SSH-forbindelse til fjernsystemet og kopierer derefter filerne sikkert fra kilden til destinationen.
Hvornår skal man bruge SCP?
SCP er især nyttig i følgende scenarier.
Fjernserver backup
SCP giver dig mulighed for at sikkerhedskopiere filer fra en ekstern server til din lokale maskine eller omvendt, hvilket sikrer dataredundans og katastrofegendannelse.
Implementering af applikationer
Det forenkler også processen ved sikkert at kopiere nødvendige filer til hvert målsystem, når applikationer implementeres på tværs af flere servere,
Overførsel af store filer
SCP tilbyder en pålidelig og sikker alternativ metode til at overføre data for store filer, der kan være for store til at sende som e-mail-vedhæftede filer.
Sikker fildeling
SCP sørger for, at data holdes krypteret under hele transit, mens der sendes fortrolige filer til andre personer.
Fjernsamarbejde
SCP kan bruges til at dele filer sikkert med samarbejdspartnere eller teammedlemmer på forskellige steder.
SCP kommandosyntaks
Før vi går i gang med, hvordan man bruger SCP-kommandoen, lad os starte med at forstå den grundlæggende syntaks.
SCP-kommandosyntaksen ser sådan ud:
scp [options] [source] [destination]
Forklaring af syntaks
Muligheder
Disse er valgfrie flag, der ændrer adfærden for SCP-kommandoen. Du kan bruge forskellige muligheder til at tilpasse overførselsprocessen. Her er nogle almindelige muligheder:
-r: Kopierer mapper og deres indhold rekursivt.
-p: Bevar den originale fils tilladelser, tidsstempler og tilstande.
-P: Angiver portnummeret for SSH-forbindelsen.
-i: Angiver den private nøglefil til SSH-godkendelse.
-C: Brug komprimering til at fremskynde dataoverførsel.
-l: Begræns den båndbredde, der bruges til overførslen (i Kbit/s).
-v: Udførlig tilstand – viser fejlfindingsmeddelelser under overførsel.
-o: Sender en mulighed til SSH-klienten. Det kan bruges til at deaktivere streng kontrol af værtsnøgler.
Kilde
Kilden angiver den fil eller mappe, du vil kopiere. Det kan være en lokal sti eller en fjern sti – afhængigt af konteksten.
Bestemmelsessted
Destinationen angiver, hvor du vil kopiere kilden. Ligesom kilden kan det også være en lokal sti eller en fjern sti.
Eksempler på kommandoer
#1. Kopier en fil fra lokal til ekstern server
scp /path/to/local/file.txt user@remotehost:/path/to/destination/
/path/to/local/file.txt: Dette er kildefilen, du vil kopiere fra din lokale maskine.
bruger@fjernvært: Erstat brugeren med fjernbrugerens navn og fjernværten med værtsnavnet eller IP-adressen på fjernserveren.
/sti/til/destination/: Dette er destinationsstien på den eksterne server, hvor filen vil blive kopieret.
Eksempel
I mit tilfælde har jeg valgt en ekstern server til overførsel af filen.
Remote Host brugernavn – abhishekvarma
Fjernværtsadresse – 192.168.29.70
scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Mens den opretter forbindelse til en ekstern maskine, beder den om adgangskoden. Her har jeg valgt en zip-fil til at kopiere.
Produktion
Og outputtet vil se sådan ud, hvis der ikke er nogen fejl ved tilslutning til en ekstern server.
sample.zip 100% 20KB 717.9KB/s 00:00
#2. Kopier en fil fra fjernbetjeningen til den lokale maskine
scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Samme som ovenfor, udskift bruger- og fjernværtsadressen.
Eksempel
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Produktion
Dette er kun prøveudgangen i mit tilfælde. Tidsstemplet varierer afhængigt af forbindelseshastigheden.
sample.zip 100% 20KB 51.2KB/s 00:00
#3. Kopier en mappe rekursivt
scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Her fortæller ‘-r’-flaget SCP om at kopiere mapper rekursivt (inklusive undermapper og deres indhold).
Eksempel
scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop
Her nævnte jeg hele mappen for at kopiere filerne.
Produktion
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, der matcher et mønster
scp /path/to/local/*.txt user@remotehost:/path/to/destination/
*.txt – Dette er et jokertegnmønster, der matcher alle filer med en .txt-udvidelse i den angivne lokale mappe. Kilde- og destinationsstier er de samme som før.
Eksempel
scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop
Produktion
Her har jeg prøvet med en .png-udvidelse.
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 /path/to/local/file.txt user@remotehost:/path/to/destination/
Her bevarer ‘-p’-flaget ændringstiderne, adgangstider og tilstande for kildefilen ved kopiering.
Eksempel
scp -p /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Produktion
sample.zip 100% 20KB 420.0KB/s 00:00
#6. Angiv en anden SSH-port
scp -P 22 /path/to/local/file.txt user@remotehost:/path/to/destination/
‘-P’-flaget angiver en anden SSH-port (22 i dette tilfælde) for SCP-forbindelsen. Du kan bruge enhver port, du ønsker.
Eksempel
scp -P 22 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Produktion
sample.zip 100% 20KB 1.2MB/s 00:00
#7. Kopier med komprimering
scp -C /path/to/local/file.txt user@remotehost:/path/to/destination/
Dette ‘-C’ flag muliggør komprimering under overførslen, hvilket potentielt reducerer størrelsen af de overførte data. Kilde- og destinationsadressen er de samme som forklaret tidligere.
Eksempel
scp -C /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Produktion
sample.zip 100% 20KB 985.8KB/s 00:00
#8. Udførligt output til fejlretning
scp -v /path/to/local/file.txt user@remotehost:/path/to/destination/
Denne ‘-v’ mulighed aktiverer det verbose output, som giver mere detaljeret information under overførselsprocessen.
Eksempel
scp -v /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Produktion
Eksempeloutputtet vil se sådan ud.
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 detaljeret output
scp -v user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Samme forklaringer som det foregående udførlige eksempel, med rollerne for lokale og fjerntliggende steder omvendt.
Eksempel
scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Produktion
Outputtet vil se sådan ud.
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 ved hjælp af en anden SSH-nøgle
scp -i /path/to/private_key.pem /path/to/local/file.txt user@remotehost:/path/to/destination/
Dette flag “-i /path/to/private_key.pem” angiver en anden privat SSH-nøgle til godkendelse.
Eksempel
scp -i /path/to/private_key.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Produktion
Hvis du har en privat nøgle, så kan du bruge den, eller også kan du bruge standardnøgle.
sample.zip 100% 20KB 1.1MB/s 00:00
#11. Kopier flere filer til den eksterne server
scp file1.txt file2.txt user@remotehost:/path/to/destination/
Denne kommando kopierer fil1.txt og fil2.txt fra den lokale mappe til den angivne destination på fjernserveren.
Eksempel
scp /home/vboxuser/Desktop/image.png /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Produktion
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 andet navn
scp user@remotehost:/path/to/remote/file.txt /path/to/local/newfilename.txt
Denne kommando kopierer fil.txt fra fjernserveren til den lokale mappe og omdøber den til nyt filnavn.txt i processen.
Eksempel
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip
Produktion
De gamle og nye filtypenavne skal være de samme, mens du udfører denne kommando.
sample.zip 100% 20KB 28.7KB/s 00:00
#13. Kopiering med specifik båndbreddegrænse
scp -l 1000 /path/to/local/file.txt user@remotehost:/path/to/destination/
Dette ‘-l’ flag angiver en båndbreddegrænse i Kbps (1000 Kbps i dette tilfælde) for overførslen.
Eksempel
scp -l 300 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Produktion
sample.zip 100% 20KB 31.3KB/s 00:00
#14. Kopiering af filer og bevarelse af symbolske links
scp -rp /path/to/local/source/ user@remotehost:/path/to/destination/
‘-p’-flaget bevarer filattributter, og -r-flaget kopierer mapper rekursivt. Denne kommando bevarer også symbolske links under kopieringen.
Eksempel
scp -rp /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop
Produktion
image.png 100% 39KB 1.8MB/s 00:00
#15. Kopiering af filer udførligt med komprimering
scp -vC /path/to/local/file.txt user@remotehost:/path/to/destination/
Denne kommando kombinerer både verbose output (-v) og komprimering (-C) under filoverførslen.
Eksempel
scp -vC /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop
Produktion
Outputtet vil se sådan ud.
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: compress incoming: raw data 792, compressed 757, factor 0.96
#16. Kopiering mellem to eksterne servere
Hvis du vil overføre filer fra en fjernserver til en anden, så kan du bruge denne kommando.
scp user1@remotehost1:/path/to/remote/file.txt user2@remotehost2:/path/to/destination/
Denne kommando overfører direkte file.txt fra remotehost1 til remotehost2.
Eksempel
scp user1@remotehost1:/path/to/remote/file.txt [email protected]:/Users/abhishekvarma/Desktop
Produktion
file.txt 100% 512KB 512.0KB/s 00:00
Hvis der er nogen fejl eller problemer under overførslen – kan outputtet vise fejlmeddelelser, der giver information om, hvad der gik galt.
ssh: connect to host source.example.com port 22: Connection refused lost connection
I dette tilfælde antyder fejlmeddelelsen, at SSH-forbindelsen til kildeserveren blev afvist. Det kan skyldes forskellige årsager, såsom forkert værtsnavn, IP-adresse, port eller problemer med SSH-konfigurationen.
Ofte stillede spørgsmål om SCP
Her er nogle ofte stillede spørgsmål relateret til SCP-protokollen sammen med deres svar.
Hvordan adskiller SCP sig fra FTP eller SFTP?
FTP står for File Transfer Protocol.
SFTP står for File Transfer Protocol. Disse bruges begge til filoverførsler.
SCP fungerer over SSH og tilbyder både kryptering og autentificering i en enkelt protokol, hvilket gør det mere sikkert og effektivt.
Hvornår skal jeg bruge SCP?
SCP er bedst egnet til scenarier, hvor sikre og pålidelige filoverførsler er påkrævet, såsom fjernsikkerhedskopiering, softwareimplementering, distribution af konfigurationsfiler og samarbejde mellem teammedlemmer.
Er SCP kompatibel med IPv6-adresser?
Ja, SCP understøtter både IPv4- og IPv6-adresser, hvilket giver dig mulighed for at overføre filer over netværk, der bruger et hvilket som helst adresseringsskema.
Konklusion✍️
Jeg håber, du fandt denne artikel nyttig til at lære om SCP, og hvordan det virker.
Du kan også være interesseret i at lære om Linux-kommandoer til systemadministrator