SCP Linux naredba – siguran prijenos datoteka u Linuxu


Linux administratori bi trebali biti upoznati sa okruženjem komandne linije. Budući da GUI (Grafički korisnički interfejs) način rada na Linux serverima nije uobičajen za instaliranje.

SSH može biti najpopularniji protokol koji omogućava administratorima Linuxa da upravljaju serverima na udaljeni siguran način. Ugrađena sa naredbom SSH postoji naredba SCP, koja se koristi za kopiranje datoteka između servera na siguran način.

Osnovna sintaksa SCP komande

Naredba ispod će čitati kao kopiju “izvorno_ime_datoteke” u “destination_folder” na “destination_host” koristeći “korisničko ime ” račun.

scp source_file_name username@destination_host:destination_folder

Postoji mnogo parametara u naredbi SCP koje možete koristiti. Evo parametara koji se mogu koristiti u svakodnevnoj upotrebi.

Siguran prijenos datoteka u Linuxu

Osnovna SCP komanda bez parametara će kopirati fajlove u pozadini. Korisnici neće vidjeti ništa osim ako se proces ne završi ili se ne pojavi neka greška.

Možete koristiti parametar “-v” za ispis informacija o otklanjanju grešaka na ekranu. Može vam pomoći da otklonite probleme s vezom, autentifikacijom i konfiguracijom.

Kopirajte datoteku sa lokalnog hosta na udaljeni server

Sljedeća naredba kopira datoteku “scp-cheatsheet.pdf” sa lokalnog na udaljeni Linux sistem u /home/tecmint direktoriju.

scp -v scp-cheatsheet.pdf [email :/home/tecmint/.

Uzorak izlaza:

Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -t /home/tecmint/.
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
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.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_xmss type -1
...

Kopirajte datoteku sa udaljenog hosta na lokalni host

Sljedeća naredba kopira datoteku “ssh-cheatsheet.pdf” sa udaljenog hosta na lokalni sistem u /home/tecmint direktoriju.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf /home/tecmint/.

Uzorak izlaza:

Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -f /home/ravi/ssh-cheatsheet.pdf
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
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.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
...

Kopirajte datoteku sa udaljenog hosta na drugi host

Sljedeća komanda kopira datoteku “ssh-cheatsheet.pdf” sa udaljenog hosta na drugi udaljeni host sistem u /home/tecmint direktoriju.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf [email :/home/anusha/.

Kopirajte datoteke s originalnim datumom i vremenom kreiranja

Parametar “-p” će sačuvati originalnu modifikaciju datoteka i vremena pristupa dok se kopiraju datoteke zajedno sa procijenjenim vremenom i brzinom veze će se pojaviti na ekranu.

scp -p scp-cheatsheet.pdf [email :/home/tecmint/.

Uzorak izlaza:

[email 's password: 
scp-cheatsheet.pdf                                                                                                                                                                 100%  531   721.4KB/s   00:00    

Scp kompresija prilikom kopiranja datoteka

Jedan od parametara koji može ubrzati vaš prijenos datoteka je parametar “-C”, koji se koristi za komprimiranje vaših datoteka u pokretu. Jedinstvena stvar je da se kompresija dešava samo u mreži. Kada datoteka stigne na odredišni server, vratit će se na originalnu veličinu kao prije kompresije.

Pogledajte ove komande. Koristi jedan fajl od 93 Mb.

scp -pv messages.log [email :.

Uzorak izlaza:

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t.
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email 's password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: Sending command: scp -v -p -t.
File mtime 1323853868 atime 1380425711
Sending file timestamps: T1323853868 0 1380425711 0
messages.log 100% 93MB 58.6KB/s 27:05
Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds
Bytes per second: sent 58758.4, received 15.6
debug1: Exit status 0

Kopiranje datoteka bez parametra “-C” rezultirat će 1661,3 sekundi. Rezultat možete uporediti sa naredbom ispod koristeći parametar “-C".

scp -Cpv messages.log [email :.

Uzorak izlaza:

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t.
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email 's password:
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: channel 0: new [client-session]
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380428748
Sending file timestamps: T1323853868 0 1380428748 0
Sink: T1323853868 0 1380428748 0
Sending file modes: C0600 97517300 messages.log
messages.log 100% 93MB 602.7KB/s 02:38
Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds
Bytes per second: sent 54813.9, received 97.0
debug1: Exit status 0
debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09
debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48

Kao što vidite, kada koristite kompresiju, proces prijenosa se obavlja za 162,5 sekundi. To je 10 puta brže nego da se ne koristi parametar “-C”. Ako kopirate puno datoteka preko mreže, parametar “-C” bi vam pomogao da smanjite ukupno vrijeme koje vam je potrebno.

Ono što treba da primetimo je da metoda kompresije neće raditi ni na jednom fajlu. Kada je izvorni fajl već komprimiran, tu nećete naći nikakvo poboljšanje. Na fajlove kao što su .zip, .rar, slike i .iso neće uticati " -C” parametar.

Promijenite SCP šifru u šifriranje datoteka

Prema zadanim postavkama, SCP koristi “AES-128” za šifriranje datoteka. Ako želite da pređete na drugu šifru da biste je šifrovali, možete koristiti parametar “-c”.

Pogledajte ovu naredbu.

scp -c 3des Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Gornja naredba govori SCPu da koristi 3des algoritam za šifriranje datoteke. Pazite da ovaj parametar koristi “-c”, a ne “-C“.

Ograničavanje upotrebe propusnog opsega sa SCP komandom

Još jedan parametar koji može biti koristan je parametar “-l”. Parametar “-l” će ograničiti propusni opseg za korištenje. Biće korisno ako napravite skriptu za automatizaciju da biste kopirali mnogo datoteka, ali ne želite da se propusni opseg iscrpi SCP procesom.

scp -l 400 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 50.3KB/s 01:13

Vrijednost 400 iza parametra “-l” znači da ograničavamo propusni opseg za SCP proces na samo 50 KB/ sek.

Jedna stvar koju treba zapamtiti je da je propusni opseg specificiran u kilobitima/sec (kbps). To znači da je 8 bitova jednako 1 bajtu.

Dok se SCP broji u kilobajtu/sec (KB/s). Dakle, ako želite ograničiti svoju propusnost na SCP maksimum od samo 50 KB/s, trebate ga postaviti na 50 x 8=400.

SCP sa drugačijim portom

Obično SCP koristi port 22 kao zadani port, ali iz sigurnosnih razloga, možete promijeniti port na drugi port. Na primjer, koristimo port 2249.

Tada bi komanda trebala biti ovakva.

scp -P 2249 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 262.3KB/s 00:14

Uvjerite se da koristi veliko “P”, a ne “p” jer se “p” već koristi za sačuvana vremena i načine rada.

SCP – Rekurzivno kopirajte datoteke i direktorije

Ponekad moramo kopirati direktorij i sve fajlove/direktorije unutar njega. Bilo bi bolje ako to možemo učiniti u jednoj naredbi koristeći parametar “-r”, koji rekurzivno kopira cijeli direktorij.

scp -r documents [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
scp.txt 100% 10KB 9.8KB/s 00:00

Kada se proces kopiranja završi, na odredišnom serveru ćete pronaći direktorij pod nazivom “documents” sa svim njegovim datotekama. Fascikla “documents” se automatski kreira.

SCP – Onemogući poruke o napretku

Ako odaberete da ne vidite mjerač napretka i poruke upozorenja/dijagnostike od SCP-a, možete ga onemogućiti pomoću parametra “-q”. Evo primjera.

scp -q Label.pdf [email :.

[email 's password:
pungki@mint ~/Documents $

Kao što vidite, nakon što unesete lozinku, nema informacija o SCP procesu. Nakon što se proces završi, ponovo ćete vidjeti upit.

SCP – Kopiraj fajlove koristeći proxy

Proxy server se obično koristi u kancelarijskom okruženju. Izvorno, SCP nije konfiguriran proxy. Kada vaše okruženje koristi proxy, morate “reći” SCP-u da komunicira sa proxyjem.

Evo scenarija. Proxy adresa je 10.0.96.6, a proxy port je 8080. Proxy je također implementirao autentifikaciju korisnika. Prvo, trebate kreirati datoteku “~/.ssh/config”. Drugo, stavite ovu naredbu unutra.

ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth

Zatim morate kreirati datoteku “~/.ssh/proxyauth” koja sadrži.

myusername:mypassword

Nakon toga, možete raditi SCP transparentno kao i obično.

Imajte na umu da vadičep možda još nije instaliran na vašem sistemu. Na moj Linux Mint, prvo ga moram instalirati, koristeći standardnu proceduru instalacije Linux Minta.

apt-get install corkscrew

Za druge sisteme zasnovane na yum-u, korisnici mogu instalirati vadičep koristeći sljedeću yum komandu.

yum install corkscrew

Druga stvar je da budući da datoteka “~/.ssh/proxyauth” sadrži vaše “korisničko ime” i “lozinku” u formatu čistog teksta , uvjerite se da datoteci možete pristupiti samo vi.

Odaberite drugu datoteku ssh_config

Za mobilne korisnike koji često prelaze između mreže kompanije i javnih mreža, bit će teško uvijek mijenjati postavke u SCP-u. Bolje je ako možemo staviti drugu datoteku ssh_config koja odgovara našim potrebama.

Proxy se koristi u mreži kompanije, ali ne i u javnoj mreži i redovno menjate mreže.

scp -F /home/pungki/proxy_ssh_config Label.pdf

[email :.
[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Prema zadanim postavkama “ssh_config” fajl po korisniku će biti smješten u “~/.ssh/config”. Kreiranje specifične “ssh_config” datoteke s proxy kompatibilnošću će olakšati prebacivanje između mreža.

Kada ste na mreži kompanije, možete koristiti parametar “-F”. Kada ste na javnoj mreži, možete preskočiti parametar “-F”.

To je sve o SCPu. Možete vidjeti man stranice za SCP za više detalja. Slobodno ostavite komentare i sugestije.