comanda scp – Secure copy

Scp (Secure Copy) este un instrument de linie de comandă pentru a copia sau transfera fișiere între gazde. Folosește același tip de mecanism de securitate ca și programul ssh.

De fapt, utilizează o conexiune ssh în fundal pentru a efectua transferul de fișiere. scp se referă atât la „protocolul” care definește modul în care ar trebui să funcționeze copia securizată, cât și la „programul” (comanda) care este instalat ca parte a suitei de instrumente OpenSSH.

În acest tutorial rapid vom analiza câteva exemple comanda scp și modul în care poate fi utilizată pentru a transfera fișiere în siguranță.

Cum se instalează scp

Scp este în general instalat în mod implicit pe majoritatea distribuțiilor linux ca parte a pachetelor openssh. Pe ubuntu/debian, de exemplu, pachetul openssh-client oferă programul scp.

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

Pachetul OpenSSH este cel care oferă programele ssh, scp, sftp împreună cu multe alte instrumente. Deci nu trebuie să facem nimic în plus aici, decât să folosim și să învățăm programul.

Utilizarea scp – sintaxa de bază

Sintaxa de bază a scp este foarte simplu de memorat. Ea arată astfel

$ scp source_file_path destination_file_path

În funcție de gazdă, calea fișierului trebuie să includă adresa completă a gazdei, numărul portului, numele de utilizator și parola împreună cu calea directorului.

Atunci, dacă „trimiteți” un fișier de pe mașina locală pe o mașină de la distanță (upload), sintaxa ar arăta astfel

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

Când copiați un fișier de pe o gazdă de la distanță pe o gazdă locală (download), arată exact invers

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

Acesta este cam tot ce înseamnă utilizarea scp pentru sarcini obișnuite. În afară de aceasta, există câteva opțiuni și funcții suplimentare pe care scp le suportă. Să facem o scurtă trecere în revistă a acestora.

Și da, în mod implicit scp va suprascrie întotdeauna fișierele de la destinație. Dacă trebuie să evitați acest lucru, folosiți un instrument mai puternic numit rsync.

Exemple de comenzi scp

1. Ieșirea verbose

Cu ajutorul ieșirii verbose, programul scp ar emite o mulțime de informații despre ceea ce face în fundal. Acest lucru este adesea util atunci când programul eșuează sau nu reușește să finalizeze cererea. Ieșirea verbose ar indica atunci punctul exact în care programul a întâmpinat probleme.

$ 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

Ieșirea ar fi mare și ar conține informații detaliate despre modul în care se realizează conexiunea, ce fișiere de configurare și de identitate sunt folosite și așa mai departe.

2. Transferați mai multe fișiere

Se pot specifica mai multe fișiere separate de un spațiu, astfel

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

Pentru a copia mai multe fișiere de pe gazda la distanță în directorul local curent

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

3. Copierea întregului director (recursiv)

Pentru a copia un întreg director de la o gazdă la alta folosiți comutatorul r și specificați directorul

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

4. Copierea fișierelor între 2 gazde la distanță

Scp poate copia fișiere și de la o gazdă la distanță la o altă gazdă la distanță.

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

5. Accelerarea transferului cu compresie

O opțiune super tare pentru a accelera transferul pentru a economisi timp și lățime de bandă. Tot ce trebuie să faceți este să folosiți opțiunea C pentru a activa compresia. Fișierele sunt comprimate din mers și decomprimate la destinație.

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

În exemplul de mai sus am mutat întregul director cu compresia activată. Câștigul de viteză ar depinde de cât de mult ar putea fi comprimate fișierele.

6. Limitați utilizarea lățimii de bandă

Dacă nu doriți ca scp să ocupe întreaga lățime de bandă disponibilă, atunci folosiți opțiunea l pentru a limita viteza maximă în Kbit/s.

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

7. Conectați-vă la un număr de port diferit pe gazda de la distanță

Dacă serverul de la distanță are un daemon ssh care rulează pe un port diferit (implicit este 22), atunci trebuie să îi spuneți lui scp să folosească acel număr de port specific folosind opțiunea ‘-P’.

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

8. Păstrați atributele fișierului

Opțiunea ‘-p’ (smallcase), ar păstra timpii de modificare, timpii de acces și modurile din fișierul original.

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

9. Modul liniștit

În modul liniștit (opțiunea ‘-q’), ieșirea scp ar fi suprimată și ar dezactiva contorul de progres, precum și mesajele de avertizare și de diagnosticare.

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

10. Specificarea fișierului de identitate

Când se utilizează autentificarea bazată pe cheie (fără parolă), ar trebui să specificați fișierul de identitate care conține cheia privată. Această opțiune este transmisă direct la comanda ssh și funcționează în același mod.

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

11. Utilizați un fișier ssh_config diferit

Utilizați opțiunea ‘-F’ pentru a specifica un fișier ssh_config diferit.

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

12. Utilizați un cifru diferit

Scp utilizează în mod implicit cifrul/încriptarea AES. Uneori este posibil să doriți să folosiți un cifru diferit. Utilizarea unui cifru diferit poate accelera procesul de transfer. De exemplu, blowfish și arcfour sunt cunoscute ca fiind mai rapide decât AES (dar mai puțin sigure).

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

În exemplul de mai sus folosim cifrul blowfish împreună cu compresia. Acest lucru poate oferi o creștere semnificativă a vitezei în funcție de lățimea de bandă disponibilă.

Rezumat

Deși scp este foarte eficient la transferul de fișiere în siguranță, îi lipsesc caracteristicile necesare unui instrument de sincronizare a fișierelor. Tot ceea ce poate face este să copieze și să lipească toate fișierele menționate dintr-o locație în alta.

Un instrument mai puternic este Rsync care nu numai că are toate funcțiile lui scp, dar adaugă mai multe caracteristici pentru a sincroniza în mod inteligent fișierele între 2 gazde. De exemplu, poate verifica și încărca doar fișierele modificate, poate ignora fișierele existente și așa mai departe.

.