- scp-kommando – Sikker kopi
- Sådan installerer du scp
- Brug af scp – grundlæggende syntaks
- scp-kommandoeksempler
- 1. Verbose output
- 2. Overfør flere filer
- 3. Kopier hele mappen (rekursivt)
- 4. Kopier filer på tværs af 2 fjernværter
- 5. Fremskynde overførslen med komprimering
- 6. Begræns båndbreddeforbruget
- 7. Opret forbindelse til et andet portnummer på fjernværten
- 8. Bevar filattributter
- 9. Stille tilstand
- 10. Angiv identitetsfil
- 11. Brug en anden ssh_config-fil
- 12. Brug en anden cipher
- Summary
scp-kommando – Sikker kopi
Scp (Secure Copy) er et kommandolinjeværktøj til at kopiere eller overføre filer på tværs af værter. Det bruger den samme slags sikkerhedsmekanisme som ssh-programmet.
Faktisk set bruger den en ssh-forbindelse i baggrunden til at udføre filoverførslen. scp henviser både til “protokollen”, der definerer, hvordan secure copy skal fungere, og til “programmet” (kommandoen), der er installeret som en del af OpenSSH-suite af værktøjer.
I denne hurtige vejledning vil vi se på et par eksempler scp-kommandoen, og hvordan den kan bruges til at overføre filer sikkert.
Sådan installerer du scp
Scp er generelt installeret som standard på de fleste linux-distroer som en del af openssh-pakker. På ubuntu/debian for eksempel leverer openssh-client-pakken scp-programmet.
$ dpkg -L openssh-client | grep scp/usr/bin/scp/usr/share/man/man1/scp.1.gz
Det er OpenSSH-pakken, der leverer ssh-, scp- og sftp-programmerne sammen med mange andre værktøjer. Så vi behøver ikke at gøre noget ekstra herinde, udover at bruge og lære programmet.
Brug af scp – grundlæggende syntaks
Den grundlæggende syntaks for scp er meget enkel at huske. Den ser således ud
$ scp source_file_path destination_file_path
Afhængigt af værten skal filstien indeholde den fulde værtsadresse, portnummer, brugernavn og adgangskode sammen med mappestien.
Så hvis du “sender” fil fra din lokale maskine til en fjernmaskine (uploading), ser syntaksen således ud
$ scp ~/my_local_file.txt _host.com:/some/remote/directory
Hvis du kopierer fil fra fjernvært til lokalvært (downloading), ser det lige omvendt ud
$ scp _host.com:/some/remote/directory ~/my_local_file.txt# just download the file$ scp :/some/path/file.txt .
Det er stort set det samme som at bruge scp til almindelige opgaver. Udover det er der et par ekstra muligheder og funktioner, som scp understøtter. Lad os tage et hurtigt overblik over disse.
Og ja, som standard vil scp altid overskrive filer på destinationen. Hvis du har brug for at undgå det, skal du bruge et mere kraftfuldt værktøj kaldet rsync.
scp-kommandoeksempler
1. Verbose output
Med verbose output ville scp-programmet udsende masser af oplysninger om, hvad det gør i baggrunden. Dette er ofte nyttigt, når programmet fejler eller ikke er i stand til at fuldføre anmodningen. Verbose output ville så angive det nøjagtige punkt, hvor programmet løb ind i problemer.
$ scp -v ~/test.txt :/root/help2356.txtExecuting: program /usr/bin/ssh host 192.168.1.3, user root, command scp -v -t /root/help2356.txtOpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013debug1: Reading configuration data /home/enlightened/.ssh/configdebug1: Reading configuration data /etc/ssh/ssh_configdebug1: /etc/ssh/ssh_config line 19: Applying options for *debug1: Connecting to 192.168.1.3 port 22.debug1: Connection established...... OUTPUT TRUNCATED
Opdatet ville være stort og indeholde detaljerede oplysninger om, hvordan forbindelsen er oprettet, hvilke konfigurations- og identitetsfiler der bruges osv.
2. Overfør flere filer
Flere filer kan angives adskilt af et mellemrum som her
$ scp foo.txt bar.txt :/path/directory/
For at kopiere flere filer fra fjernværten til den aktuelle lokale mappe
$ scp :/path/directory/\{foo.txt,bar.txt\} .$ scp :~/\{abc.log,cde.txt\} .
3. Kopier hele mappen (rekursivt)
For at kopiere en hel mappe fra en vært til en anden skal du bruge r-switchen og angive mappen
$ scp -v -r ~/Downloads :/root/Downloads
4. Kopier filer på tværs af 2 fjernværter
Scp kan også kopiere filer fra 1 fjernvært til en anden fjernvært.
$ scp :/some/remote/dir/foobar.txt :/some/remote/dir/
5. Fremskynde overførslen med komprimering
En superfed mulighed for at fremskynde overførslen for at spare tid og båndbredde. Det eneste, du skal gøre, er at bruge indstillingen C for at aktivere komprimering. Filerne komprimeres undervejs og dekomprimeres på destinationen.
$ scp -vrC ~/Downloads :/root/Downloads
I ovenstående eksempel har vi flyttet hele mappen med komprimering aktiveret. Hastighedsforøgelsen ville afhænge af, hvor meget filerne kunne komprimeres.
6. Begræns båndbreddeforbruget
Hvis du ikke ønsker, at scp skal optage hele den tilgængelige båndbredde, skal du bruge indstillingen l til at begrænse den maksimale hastighed i Kbit/s.
$ scp -vrC -l 400 ~/Downloads :/root/Downloads
7. Opret forbindelse til et andet portnummer på fjernværten
Hvis fjernserveren har ssh-dæmon, der kører på en anden port (standard er 22), skal du fortælle scp, at det skal bruge det pågældende portnummer ved hjælp af indstillingen ‘-P’.
$ scp -vC -P 2200 ~/test.txt :/some/path/test.txt
8. Bevar filattributter
Indstillingen ‘-p’ (små bogstaver), vil bevare ændringstider, adgangstider og tilstande fra den oprindelige fil.
$ scp -C -p ~/test.txt :/some/path/test.txt
9. Stille tilstand
I stille tilstand (‘-q’-indstillingen ) vil scp-udgangen blive undertrykt, og den vil deaktivere fremskridtsmåleren samt advarsels- og diagnostiske meddelelser.
$ scp -vCq ~/test.txt :/some/path/test.txt
10. Angiv identitetsfil
Når du bruger nøglebaseret (adgangskodefri) autentificering, skal du angive identitetsfilen, som indeholder den private nøgle. Denne indstilling overføres direkte til ssh-kommandoen og fungerer på samme måde.
$ scp -vCq -i private_key.pem ~/test.txt :/some/path/test.txt
11. Brug en anden ssh_config-fil
Brug indstillingen ‘-F’ for at angive en anden ssh_config-fil.
$ scp -vC -F /home/user/my_ssh_config ~/test.txt :/some/path/test.txt
12. Brug en anden cipher
Scp bruger som standard AES-cipher/-kryptering. Nogle gange ønsker du måske at bruge en anden cipher. Brug af en anden cipher kan fremskynde overførselsprocessen. For eksempel er blowfish og arcfour kendt for at være hurtigere end AES (men mindre sikre).
$ scp -c blowfish -C ~/local_file.txt :/remote/path/file.txt
I ovenstående eksempel bruger vi blowfish cipher sammen med komprimering. Dette kan give et betydeligt hastighedsforøgelse afhængigt af den tilgængelige båndbredde.
Summary
Selv om scp er meget effektivt til at overføre filer sikkert, mangler det de nødvendige funktioner i et værktøj til filsynkronisering. Alt det kan gøre er at kopiere indsætte alle de nævnte filer fra et sted til et andet.
Et mere kraftfuldt værktøj er Rsync, som ikke kun har alle funktioner fra scp, men tilføjer flere funktioner til intelligent at synkronisere filer på tværs af 2 værter. Det kan f.eks. kun kontrollere og uploade de ændrede filer, ignorere eksisterende filer og så videre.
Skriv et svar