scp-komento – Suojattu kopiointi

Scp (Secure Copy) on komentorivityökalu tiedostojen kopioimiseen tai siirtämiseen isäntien välillä. Se käyttää samanlaista turvamekanismia kuin ssh-ohjelma.

Tosiasiassa se käyttää ssh-yhteyttä taustalla tiedostonsiirron suorittamiseen. scp viittaa sekä ”protokollaan”, joka määrittelee, miten turvallisen kopioinnin pitäisi toimia, että ”ohjelmaan” (komentoon), joka on asennettu osaksi OpenSSH-työkalusarjaa.

Tässä nopeassa opetusohjelmassa tarkastelemme muutamaa esimerkkiä scp-komennosta ja sitä, miten sitä voidaan käyttää tiedostojen turvalliseen siirtoon.

Scp:n asentaminen

Scp on yleensä asennettu oletusarvoisesti useimpiin linux-jakelupalveluihin osana openssh-paketteja. Esimerkiksi ubuntussa/debianissa openssh-client-paketti tarjoaa scp-ohjelman.

$ dpkg -L openssh-client | grep scp/usr/bin/scp/usr/share/man/man1/scp.1.gz

OpenSSH-paketti tarjoaa ssh-, scp- ja sftp-ohjelmat sekä monia muita työkaluja. Meidän ei siis tarvitse tehdä tässä mitään ylimääräistä, paitsi käyttää ja opetella ohjelmaa.

Scp:n käyttö – perussyntaksi

Scp:n perussyntaksi on hyvin yksinkertainen muistaa. Se näyttää tältä

$ scp source_file_path destination_file_path

Hänestä riippuen tiedostopolun tulee sisältää täydellinen isäntäosoite, porttinumero, käyttäjätunnus ja salasana sekä hakemistopolku.

Jos siis ”lähetät” tiedoston paikalliselta koneeltasi etäkoneelle (uploading), syntaksi näyttää tältä

$ scp ~/my_local_file.txt _host.com:/some/remote/directory

Kun kopioit tiedoston etäkoneelta paikalliselle koneelle (downloading), se näyttää juuri päinvastaiselta

$ scp _host.com:/some/remote/directory ~/my_local_file.txt# just download the file$ scp :/some/path/file.txt .

Tässä on aika lailla kyse scp:n käytöstä tavallisiin tehtäviin. Sen lisäksi on pari ylimääräistä vaihtoehtoa ja toimintoa, joita scp tukee. Otetaanpa nopea katsaus niihin.

Ja kyllä, oletusarvoisesti scp korvaa aina tiedostot määränpäässä. Jos haluat välttää sen, käytä tehokkaampaa työkalua nimeltä rsync.

scp-komentoesimerkkejä

1. Sanallinen ulostulo

Sanallisella ulostulolla scp-ohjelma tulostaisi paljon tietoa siitä, mitä se tekee taustalla. Tästä on usein hyötyä, kun ohjelma epäonnistuu tai ei pysty suorittamaan pyyntöä loppuun. Tällöin verbose-tuloste osoittaisi tarkan kohdan, jossa ohjelma ajautui ongelmiin.

$ 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

Tuloste olisi suuri ja sisältäisi yksityiskohtaista tietoa siitä, miten yhteys muodostetaan, mitä konfiguraatio- ja identiteettitiedostoja käytetään ja niin edelleen.

2. Siirrä useita tiedostoja

Monia tiedostoja voidaan määrittää välilyönnillä erotettuna näin

$ scp foo.txt bar.txt :/path/directory/

Kopioida useita tiedostoja etäisännästä nykyiseen paikalliseen hakemistoon

$ scp :/path/directory/\{foo.txt,bar.txt\} .$ scp :~/\{abc.log,cde.txt\} .

3. Siirrä useita tiedostoja. Kopioi koko hakemisto (rekursiivisesti)

Kopioidaksesi kokonaisen hakemiston yhdeltä isännältä toiselle käytä r-kytkintä ja määritä hakemisto

$ scp -v -r ~/Downloads :/root/Downloads

4. Kopioi tiedostoja kahden etäisännän välille

Scp voi kopioida tiedostoja myös yhdeltä etäisännältä toiselle etäisännälle

$ scp :/some/remote/dir/foobar.txt :/some/remote/dir/

5. Nopeuta siirtoa pakkauksella

Erittäin siisti vaihtoehto nopeuttaa siirtoa säästääksesi aikaa ja kaistanleveyttä. Sinun tarvitsee vain käyttää C-vaihtoehtoa ottaaksesi pakkauksen käyttöön. Tiedostot pakataan lennossa ja puretaan määränpäässä.

$ scp -vrC ~/Downloads :/root/Downloads

Yllä olevassa esimerkissä siirrettiin koko hakemisto pakkauksen ollessa käytössä. Nopeushyöty riippuisi siitä, kuinka paljon tiedostoja voitaisiin pakata.

6. Rajoita kaistanleveyden käyttöä

Jos et halua scp:n vievän koko käytettävissä olevaa kaistanleveyttä, käytä l-vaihtoehtoa rajoittaaksesi enimmäisnopeutta Kbit/s.

$ scp -vrC -l 400 ~/Downloads :/root/Downloads

7. Rajoita kaistanleveyden käyttöä

$ scp -vrC -l 400 ~/Downloads :/root/Downloads

. Yhteyden muodostaminen eri porttinumeroon etäisännällä

Jos etäpalvelimella on ssh-demoni, joka toimii eri portissa (oletusarvo on 22), sinun on käskettävä scp:tä käyttämään kyseistä porttinumeroa käyttämällä ’-P’-vaihtoehtoa.

$ scp -vC -P 2200 ~/test.txt :/some/path/test.txt

8. Tiedoston attribuuttien säilyttäminen

Vaihtoehto ’-p’-vaihtoehto (pienaakkoset) säilyttäisi alkuperäisen tiedoston muokkausajankohdan, hakuajankohdan ja -tilat.

$ scp -C -p ~/test.txt :/some/path/test.txt

9. Hiljainen tila

Hiljaisessa tilassa (’-q’-vaihtoehto ) scp-ulostulo tukahdutettaisiin, ja etenemismittari sekä varoitus- ja diagnoosiviestit poistettaisiin käytöstä.

$ scp -vCq ~/test.txt :/some/path/test.txt

10. Määritä identiteettitiedosto

Käytettäessä avainpohjaista (salasanatonta) todennusta, sinun on määritettävä identiteettitiedosto, joka sisältää yksityisen avaimen. Tämä vaihtoehto välitetään suoraan ssh-komentoon ja toimii samalla tavalla.

$ scp -vCq -i private_key.pem ~/test.txt :/some/path/test.txt

11. Käytä eri ssh_config-tiedostoa

Valinnalla ’-F’ voit määrittää eri ssh_config-tiedoston.

$ scp -vC -F /home/user/my_ssh_config ~/test.txt :/some/path/test.txt

12. Käytä eri salausta

Scp käyttää oletusarvoisesti AES-salausta/salausta. Joskus saatat haluta käyttää eri salakirjoitusta. Eri salakirjoituksen käyttäminen voi nopeuttaa siirtoprosessia. Esimerkiksi blowfish ja arcfour ovat tunnetusti nopeampia kuin AES (mutta vähemmän turvallisia).

$ scp -c blowfish -C ~/local_file.txt :/remote/path/file.txt

Yllä olevassa esimerkissä käytämme blowfish-salausta yhdessä pakkauksen kanssa. Tämä voi antaa merkittävän nopeuslisäyksen riippuen käytettävissä olevasta kaistanleveydestä.

Yhteenveto

Vaikka scp on erittäin tehokas tiedostojen turvallisessa siirrossa, siitä puuttuvat tiedostojen synkronointityökalun tarvittavat ominaisuudet. Se voi vain kopioida ja liittää kaikki mainitut tiedostot yhdestä paikasta toiseen.

Tehokkaampi työkalu on Rsync, joka ei ainoastaan tarjoa kaikkia scp:n toimintoja, vaan lisää siihen lisää ominaisuuksia, joiden avulla tiedostot voidaan älykkäästi synkronoida kahden isäntäkoneen välillä. Se voi esimerkiksi tarkistaa ja ladata vain muutetut tiedostot, jättää olemassa olevat tiedostot huomiotta ja niin edelleen.