Як використовувати команду 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:шлях/до/джерело/файл> <[email protected]_ip_address: ціль/шлях>

Розуміння синтаксису:

  • По-перше, <[email protected]_ip_address:path/to/source/file> вказує «джерельну» систему, звідки вам потрібно перенести ваші файли/каталоги.
  • По-друге, <[email protected]_ip_address:target/path> визначає «цільову» систему, до якої ви бажаєте передати свої файли/каталоги.

Якщо залишити будь-який із наведених вище параметрів, команда scp у Linux спочатку шукатиме файл, а потім скопіює його локально. Нижче наведено деякі параметри, які можна поєднати з командою.

OptionsDestination-PS вказує, до якого порту підключатися до хост-системи. Якщо опущено, за замовчуванням використовуватиметься порт 22.-pЗберігає час модифікації, час доступу та режими з оригінального файлу під час копіювання в цільову систему.-rРекурсивно копіює весь каталог у цільову систему.-JВикористовується для підключення до вихідну систему та систему призначення через проксі-систему (перехідний хост).-3коли цей прапорець використовується, він копіює файли як у цільову систему, так і в локальну систему-4примушує команду scp використовувати лише адреси IPv4.-6примушує scp для використання лише адрес IPv6.

  Як увімкнути вхід Root SSH в Linux

Як скопіювати файли за допомогою команди 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 у вихідній системі та зберегти копію відкритого ключа в системі призначення.

Як правило, користувачі скаржаться на помилку «Не вдалося перевірити ключ хоста» під час передачі файлів між двома віддаленими системами. Щоб обійти помилку, використовуйте ssh-ключ як додаткову міру. Ми пояснили, як ви можете це зробити прямо тут:

  Як встановити SSH на Linux і корисні команди

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 — це ім’я та шлях, які потрібно зберегти для отримання файлу.

Передайте кілька файлів за допомогою команди scp

Передача кількох файлів по одному може бути виснажливим завданням для будь-кого. Натомість ви можете використовувати наведений нижче синтаксис для обміну файлами за допомогою команди scp у Linux:

scp @:

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

  Як використовувати RealVNC в Linux

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

Давайте розберемося, як працює команда в прикладі і що вона робить:

  • -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. Якщо у вас виникли проблеми під час використання команди, повідомте нам про це в розділі коментарів.