Како користити сцп команду за сигуран пренос датотека у Линуку

Ukoliko želite da prebacite određene fajlove između servera na Linux sistemu, postoji više načina da to učinite. Međutim, ako vam je sigurnost prenosa prioritet, izbor se sužava. Najjednostavnije rešenje je korišćenje `scp` komande, odnosno Secure Copy protokola, koja omogućava bezbedan transfer datoteka. U ovom tekstu objasnićemo kako koristiti `scp` komandu za siguran prenos fajlova na vašem Linux sistemu.

Prenos fajlova pomoću `scp` komande u Linuxu (2023)

Šta je `scp` komanda u Linuxu?

Kada je reč o prenosu fajlova preko zaštićene mreže, `scp` komanda je izuzetno korisna. `scp` je skraćenica za Secure Copy Protocol i omogućava prenos fajlova i direktorijuma između dva sistema putem SSH (Secure Shell) konekcije. Korišćenjem SSH protokola, fajlovi se šifriraju, čime se obezbeđuje njihova sigurnost tokom prenosa. Jednostavno rečeno, `scp` komanda je sigurnija verzija `cp` komande, o kojoj više možete saznati u našem članku o Linux terminal komandama.

Kako koristiti `scp` komandu: Sintaksa i opcije

Pre nego što pređemo na prenos fajlova pomoću `scp` komande, pogledajmo njenu sintaksu i dostupne opcije:

`scp` <[email protected]_ip_adresa:putanja/do/izvornog/fajla> <[email protected]_ip_adresa:ciljna/putanja>

Razumevanje sintakse:

  • Prvo, <[email protected]_ip_adresa:putanja/do/izvornog/fajla> definiše izvorni sistem sa kog se prenose fajlovi/direktorijumi.
  • Drugo, <[email protected]_ip_adresa:ciljna/putanja> definiše ciljni sistem na koji se fajlovi/direktorijumi prenose.

Ako izostavite bilo koji od navedenih parametara, `scp` komanda će prvo pretražiti fajl, a zatim ga kopirati lokalno. Neke od opcija koje se mogu koristiti uz `scp` komandu su:

Opcije:
-P : Određuje port koji se koristi za povezivanje sa host sistemom. Ako se izostavi, podrazumevano se koristi port 22.
-p : Čuva vreme modifikacije, vreme pristupa i režime originalnog fajla prilikom kopiranja na ciljni sistem.
-r : Rekurzivno kopira ceo direktorijum na ciljni sistem.
-J : Koristi se za povezivanje izvornog i odredišnog sistema preko proxy sistema (jump host).
-3 : Kada se koristi ova zastavica, fajlovi se kopiraju i na ciljni i na lokalni sistem.
-4 : Primorava `scp` komandu da koristi samo IPv4 adrese.
-6 : Primorava `scp` komandu da koristi samo IPv6 adrese.

Kako kopirati fajlove pomoću `scp` komande

Pre korišćenja `scp` komande na Linuxu, potrebno je ispuniti određene preduslove na oba, i host i ciljnom sistemu:

  • SSH mora biti instaliran.
  • Potreban je root pristup ili korisnik sa sudo privilegijama.

Kopiranje fajlova sa lokalnog hosta na udaljeni cilj

Ukoliko želite da prenesete fajl sa vašeg lokalnog sistema na udaljeni ciljni sistem, koristite sledeću sintaksu:

`scp` <opcije> <putanja_do_lokalnog_fajla> <udaljeni_korisnik>@<udaljena_ciljna_ip_adresa>:<putanja_do_cuvanja_na_udaljenom_odredistu>

Kako bi sintaksa bila jasnija, pogledajmo sledeći primer:

`scp` test.txt [email protected]:/home/remote2/Documents/

U gornjem primeru:

  • `test.txt` je naziv fajla koji se prenosi i nalazi se u trenutnom direktorijumu lokalnog sistema.
  • `test` je korisničko ime na ciljnom sistemu.
  • `139.144.11.105` je IP adresa ciljnog sistema.
  • `/home/remote2/Documents/` je lokacija na ciljnom sistemu gde će preneti fajl biti sačuvan.

Kopiranje fajlova sa udaljenog hosta na lokalni cilj

Ukoliko je potrebno da prenesete fajl sa udaljenog hosta na vaš lokalni računar, koristite sledeću sintaksu `scp` komande na vašem Linux sistemu:

`scp` <opcije> <udaljeni_korisnik>@<ip_adresa_udaljenog_hosta>:<putanja_do_fajla_za_transfer> <putanja_do_fajla_za_cuvanje>

Na primer, recimo da želite da prenesete fajl pod nazivom `test.py` sa udaljenog servera, koristite ovu komandu:

`scp` [email protected]:/home/test/test1.py ~/test1.py

U ovom primeru:

  • `test` je korisničko ime na udaljenom hostu.
  • `10.10.11.113` je IP adresa udaljenog hosta.
  • `/home/test/test1.py` je putanja do fajla koji se prenosi sa udaljenog hosta.
  • `~/test1.py` je naziv fajla nakon prebacivanja na lokalni računar i čuva se u matičnom direktorijumu.

Prenos fajlova sa jednog udaljenog hosta na drugi udaljeni cilj

Pomoću `scp` komande, ne samo da možete prenositi fajlove između vašeg lokalnog sistema i udaljenog računara, već i između dva udaljena sistema. Pre nego što prenesete fajlove sa jednog udaljenog sistema na drugi, preporučuje se da generišete privatni SSH ključ i javni SSH ključ na izvornom sistemu i sačuvate kopiju javnog ključa na odredišnom sistemu.

Korisnici se često žale na grešku „Verifikacija ključa hosta nije uspela“ prilikom prenosa fajlova između dva udaljena sistema. Da biste izbegli ovu grešku, koristite SSH ključ kao dodatnu meru bezbednosti. Proces generisanja SSH ključeva je objašnjen u nastavku:

1. Generišite par javni/privatni ključ na izvornom serveru sa ovom komandom:

`ssh-keygen -t `

2. Kao algoritam za šifrovanje, možete koristiti „rsa“, koji se najčešće koristi ili bilo koji drugi algoritam po vašem izboru.

3. Zatim će sistem tražiti lokaciju za čuvanje SSH ključa. Možete ga sačuvati na bilo kojoj lokaciji ili koristiti podrazumevanu lokaciju.

4. Za pristupnu frazu, možete uneti bilo šta ili je ostaviti praznom pritiskom na Enter.

5. Zatim, kopirajte javni ključ na odredišni server koristeći naredbu ispod. Ovim putem se možete prijaviti na odredišni sistem bez lozinke koristeći SSH.

`ssh-copy-id @`

Napomena: Metod prijavljivanja bez lozinke funkcioniše samo za korisnika za kojeg ste generisali SSH ključ.

6. Nakon kreiranja i čuvanja SSH ključa na udaljenom serveru, koristite sledeću sintaksu `scp` komande za razmenu fajlova između dva udaljena Linux sistema:

`scp` <opcije> <udaljeni_korisnik_1>@<udaljena_host_ip_adresa>:<putanja_do_fajla_za_transfer> <udaljeni_korisnik_2>@<udaljena_ciljna_ip_adresa>:<putanja_do_cuvanja_na_udaljenom_odredistu>

Recimo da želite da prenesete fajl pod nazivom `test.txt` sa jednog udaljenog hosta na drugi udaljeni sistem, koristite ovu komandu:

`scp` [email protected]:/home/test1/test.txt [email protected]:/home/remote2/Documents/test1.txt

U ovom primeru:

  • `remote1` je korisničko ime na hostu udaljenog pošiljaoca.
  • `10.10.11.113` je IP adresa hosta udaljenog pošiljaoca.
  • `/home/test1/test.txt` je putanja do fajla koji se šalje.
  • `remote2` je korisničko ime na odredištu udaljenog primaoca.
  • `10.11.27.111` je IP adresa udaljenog primaoca.
  • `/home/remote2/Documents/test1.txt` je ime i putanja gde će biti sačuvan primljeni fajl.

Prenos više fajlova pomoću `scp` komande

Prenos jednog po jednog fajla može biti zamoran zadatak. Umesto toga, možete koristiti sledeću sintaksu za razmenu više fajlova pomoću `scp` komande na Linuxu:

`scp` <putanja_do_fajla_1> <putanja_do_fajla_2> <udaljeni_primalac>@<udaljena_ciljna_ip_adresa>:<putanja_do_cuvanja_na_udaljenom_odredistu>

Na primer, pretpostavimo da treba da pošaljete četiri fajla, uključujući `test1.txt`, `test2.py`, `test3.sh` i `test4.c` udaljenom primaocu, možete koristiti sledeću komandu:

`scp -P 22 test1.txt test2.py test3.sh test4.c [email protected]:/home/remote_1/Documents`

Hajde da razjasnimo kako ova komanda funkcioniše:

  • `-P 22` se koristi za specifikaciju povezivanja preko porta 22.
  • `test1.txt test2.py test3.sh test4.c` su nazivi fajlova koji se prenose.
  • `remote_1` je korisničko ime primaoca.
  • `10.10.11.113` je IP adresa primaoca.
  • `/home/remote_1/Documents` se odnosi na putanju za čuvanje primljenih fajlova.

Možete koristiti i džokere za slanje više fajlova sa istom ekstenzijom, kao što je prikazano u nastavku:

`scp . @:`

Na primer, ako treba da pošaljete sve `.py` fajlove na udaljeni server, koristite sledeću `scp` komandu u Linux terminalu:

`scp *.py [email protected]:/home/remote_1/`

Gde:

  • `*.py` označava sve Python fajlove.
  • `remote1` je korisničko ime primaoca.
  • `10.10.11.113` je IP adresa primaoca.
  • `/home/remote_1/` je lokacija za čuvanje primljenih fajlova.

Često postavljana pitanja

Da li je prenos SCP fajlova siguran?

Secure Copy Protocol, odnosno `scp`, je protokol koji se zasniva na SSH tehnologiji i koristi šifrovanje i autentifikaciju za razmenu fajlova između dva hosta. Ovo osigurava potpunu sigurnost i integritet podataka između dva hosta.

Da li je SCP sigurniji od SFTP-a?

I SCP i SFTP protokoli su jednako sigurni. Glavna prednost korišćenja `scp` protokola u odnosu na SFTP je veća brzina prenosa, što je posebno korisno u mrežama sa velikim kašnjenjem.

Bezbedan prenos fajlova pomoću `scp` komande u Linuxu

U nekom trenutku, svaki korisnik će imati potrebu za razmenom fajlova preko mreže. `scp` komanda olakšava siguran i efikasan prenos fajlova čak i na mreži sa velikim kašnjenjem. Poznavanje različitih opcija i sintakse `scp` komande može biti od velike pomoći. Takođe možete pogledati naše vodiče o tome kako preimenovati fajl u Linuxu i kako obrisati fajl u Linuxu da biste dodatno poboljšali vaše veštine upravljanja fajlovima u operativnom sistemu. Nadamo se da vam je ovaj tekst pomogao da naučite kako koristiti `scp` komandu za prenos fajlova na Linux računarima. Ukoliko naiđete na bilo kakve probleme prilikom korišćenja ove komande, javite nam u odeljku za komentare.