Как да използвате командата scp за сигурно прехвърляне на файлове в Linux

Да предположим, че искате да прехвърлите някои файлове между сървъри на Linux система. Има много начини, по които можете да изпълните задачата, но ако вашият приоритет е да прехвърляте файлове сигурно, ви остават няколко опции. Най-лесното решение е да използвате командата scp или защитено копиране, за да прехвърлите вашите файлове, без да се притеснявате за сигурността. В тази статия ще обясним как да използвате сигурно файлове за прехвърляне с помощта на командата scp във вашата Linux система.

Прехвърляне на файлове с команда scp в Linux (2023)

Какво е команда scp в Linux

Когато става въпрос за прехвърляне на файлове през защитена мрежа, командата scp може да бъде много полезна. Това означава Secure Copy Protocol и прехвърля файлове и директории между две системи през SSH (Secure Shell) връзка. С ssh можете да сте сигурни в сигурността на вашите файлове, тъй като те са криптирани по подразбиране. Казано по-просто, командата scp е по-сигурна версия на командата cp, за която можете да прочетете всичко в нашата статия за команди на терминал на Linux.

Как да използвате командата scp: Синтаксис и опции

Преди да можем да прехвърляме файлове чрез scp, нека видим синтаксиса и опциите на командата тук:

scp <опция> <[email protected]_ip_address:path/to/source/file> <[email protected]_ip_address:цел/път>

Разбиране на синтаксиса:

  • Първо, <[email protected]_ip_address:path/to/source/file> указва системата „източник“, откъдето трябва да прехвърлите вашите файлове/директории.
  • Второ, <[email protected]_ip_address:target/path> указва „целевата“ система, към която искате да прехвърлите вашите файлове/директории.

Ако оставите някой от горните параметри, командата scp в Linux първо ще потърси файла и след това ще го копира локално. Някои от опциите за сдвояване с командата са:

  Как да използвате Tidal Music от командния ред на Linux

OptionsDestination-PS Указва кой порт да се свърже с хост системата. Ако е пропуснато, тогава ще използва порт 22 по подразбиране.-pЗапазва времето за модификация, времената за достъп и режимите от оригиналния файл, когато се копира в целевата система.-rКопира цялата директория в целевата система рекурсивно.-JU използва за свързване на изходна система и целева система чрез прокси система (jump host).-3когато се използва този флаг, той копира файловете както в целевата система, така и в локалната система-4принуждава командата scp да използва само IPv4 адреси.-6принуждава scp команда за използване само на IPv6 адреси.

Как да копирате файлове с помощта на командата scp

Преди да използвате командата scp в Linux, има някои предпоставки, които трябва да изпълните както на хост, така и на целевата система:

  • ssh трябва да бъде инсталиран
  • root достъп или всеки потребител със sudo привилегии

Копирайте файлове от локален хост към отдалечена цел

Ако имате файл, който трябва да прехвърлите от вашата локална система към отдалечена цел, трябва да използвате следния синтаксис:

scp @:

Ако горният синтаксис може да изглежда сложен, пример ще го изясни:

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

В горния пример:

  • test.txt е името на файла, който ще бъде прехвърлен и се намира в текущата директория на локалната система.
  • test е потребителското име в целевата система.
  • 139.144.11.105 е IP адресът на целевата система.
  • /home/remote2/Documents/ е местоположението в целевата система, където ще бъде записан прехвърленият файл.

Копирайте файлове от отдалечен хост към локална цел

Ако трябва да прехвърлите файл от отдалечен хост на вашата локална машина, използвайте следния синтаксис на командата scp на вашата Linux система:

scp @:

Например, да кажем, че трябва да прехвърлите файл с име test.py от отдалечения сървър, на който работите, използвайте тази команда:

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

В този пример:

  • test е потребителското име на отдалечения хост.
  • 10.10.11.113 е IP адресът на отдалечения хост.
  • /home/test/test1.py е пътят на файла, който ще бъде прехвърлен от отдалечения хост.
  • ~/test1.py е името на файла, след като бъде прехвърлен на локалната машина и съхранен в началната директория.

Прехвърляне на файлове от един отдалечен хост към друга отдалечена цел

С командата scp можете не само да прехвърляте файлове между вашата локална система и отдалечена машина, но и да прехвърляте файлове между две отдалечени системи. Но преди да можете да прехвърляте файлове от една отдалечена система към друга отдалечена система, се препоръчва да генерирате частен ssh ключ и публичен ssh ключ в изходната система и да съхраните копие на публичния ключ в целевата система.

  Как да инсталирате PulseAudio Equalizer на Linux и да подобрите звука

Обикновено потребителите се оплакват от грешката „Неуспешна проверка на ключа на хоста“ при прехвърляне на файлове между две отдалечени системи. За да заобиколите грешката, използвайте ssh-ключ като добавена мярка. Обяснихме как можете да направите това тук:

1. Генерирайте двойка публичен/частен ключ на сървъра източник с тази команда:

ssh-keygen -t <алгоритъм_за_шифроване>

2. За алгоритми за криптиране можете да използвате „rsa“, който е най-често използваният алгоритъм или всеки друг алгоритъм по ваш избор.

3. След това ще бъдете помолени да изберете местоположението за съхранение на ssh ключа. Можете да го съхранявате на произволно място по ваш избор или в местоположението по подразбиране.

4. За паролата можете да въведете всичко по ваш избор или да го оставите празно, като натиснете Enter.

5. След това копирайте публичния ключ на целевия сървър, като използвате командата по-долу. С това можете дори да влезете в целевата система без парола, като използвате ssh.

ssh-copy-id @

Забележка: методът за влизане без парола ще работи само за потребителя, за който сте генерирали ssh-ключа.

6. След като създадете и съхраните ssh ключа на отдалечения сървър, използвайте този синтаксис на командата scp, за да обменяте файлове между две отдалечени системи, работещи с Linux:

scp @: @:

Да кажем, че трябва да прехвърлите файл с име test.txt от един отдалечен хост към друг отдалечен приемник, използвайте командата:

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

В този пример:

  • remote1 е името на потребителя в хоста на отдалечения подател
  • 10.10.11.113 е IP адресът на хоста на отдалечения подател
  • /home/test1/test.txt е пътят до файла, който ще бъде изпратен
  • remote2 е името на потребителя в целевия отдалечен приемник
  • 10.11.27.111 е IP адресът на целевия отдалечен приемник
  • /home/remote2/Documents/test1.txt е името и пътят, които трябва да бъдат запазени за файла, който ще бъде получен.
  Как да настроите удобен за деца компютър с Linux

Прехвърлете няколко файла с помощта на командата scp

Прехвърлянето на множество файлове един по един може да бъде досадна задача за всеки. Вместо това можете да използвате синтаксиса по-долу, за да обменяте файлове с помощта на командата scp в Linux:

scp @:

Например – Да предположим, че трябва да изпратите четири файла, включително test1.txt, test2.py, test3.sh и test4.c, до отдалечен приемник, можете да използвате командата по-долу:

scp -P 22 test1.txt test2.py test3.sh test4.c [email protected]:/home/remote_1/Документи

Нека разберем как работи командата в примера и какво прави:

  • -p 2222 се използва за указване на свързване през порт 22
  • test1.txt test2.py test3.sh test4.c са имената на файловете за прехвърляне
  • remote_1 е потребителското име на получаващата система
  • 10.10.11.113 е IP адресът на приемника
  • /home/remote_1/Documents се отнася до пътя за съхраняване на получения файл.

Можете дори да използвате заместващи знаци, за да изпратите множество файлове със същото разширение, както е показано по-долу:

scp <заместващ знак>.<разширение> <отдалечен_приемник>@:<път_към_съхранение_в_отдалечена_дестинация>

Например, ако трябва да изпратите всички .py файлове на отдалечен сървър, използвайте командата scp по-долу в терминала на Linux:

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

Тук,

  • *.py означава всички файлове на python
  • remote1 е потребителското име на приемника
  • 10.10.11.113 е IP адресът на получателя
  • /home/remote_1/ е мястото за съхранение на получения файл

често задавани въпроси

Сигурно ли е прехвърлянето на SCP файлове?

Протоколът за защитено копиране или scp е протокол, който се основава на SSH технология и използва криптиране и удостоверяване за обмен на файлове между два хоста. Това гарантира пълна сигурност и цялост на данните между двата хоста.

SCP по-сигурен ли е от SFTP?

И SCP, и SFTP протоколите са еднакви по отношение на сигурността. Основното предимство на използването на scp пред SFTP са бързите скорости на трансфер, които са особено полезни в мрежи с висока латентност.

Прехвърляйте файлове сигурно с помощта на командата scp в Linux

В даден момент всеки потребител трябва да обмени някои файлове по мрежата. Командата scp улеснява сигурното и ефективно прехвърляне на файлове дори в мрежа с висока латентност. Разбира се, познаването на различните scp опции и синтаксис също може да бъде полезно. Можете също да се обърнете към нашите ръководства за това как да преименувате файл в Linux и как да изтриете файл в Linux, за да подобрите допълнително уменията си за управление на файлове в операционната система. Надяваме се, че тази статия ви е помогнала да научите как да използвате командата scp за прехвърляне на файлове на компютри с Linux. Ако срещнете проблеми, докато използвате командата, уведомете ни в секцията за коментари.