Як використовувати команду scp для безпечної передачі файлів у Linux

Безпечна передача файлів між серверами Linux за допомогою scp

Уявіть, що вам потрібно передати певні файли між різними серверами у вашій Linux системі. Існує безліч способів виконати це завдання, але коли безпека є вашим головним пріоритетом, вибір стає обмеженішим. Найпростіший та надійніший варіант – скористатися командою scp, або “безпечною копією”. Ця команда дозволяє передавати файли, не хвилюючись про можливі загрози. У цій статті ми детально розглянемо, як ефективно використовувати команду scp для безпечної передачі файлів у вашій системі Linux.

Що таке команда scp?

Команда scp (Secure Copy Protocol) є незамінним інструментом для передачі файлів через захищену мережу. Вона використовує протокол SSH (Secure Shell) для встановлення з’єднання між двома системами, забезпечуючи шифрування даних під час передачі. Простіше кажучи, scp є безпечнішою альтернативою команди cp, яка виконує копіювання в локальній системі. Ви можете дізнатися більше про команду cp з наших інших статей про команди терміналу Linux.

Синтаксис та параметри команди scp

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

scp <параметри> <[email protected]_ip_address:шлях/до/джерела/файл> <[email protected]_ip_address:цільовий/шлях>

Розберемо цей синтаксис:

  • <[email protected]_ip_address:шлях/до/джерела/файл> – визначає “джерельну” систему, звідки ви копіюєте файли або каталоги.
  • <[email protected]_ip_address:цільовий/шлях> – визначає “цільову” систему, куди ви хочете передати файли або каталоги.

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

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

Як копіювати файли за допомогою команди scp

Перед використанням scp, переконайтеся, що на обох системах виконані такі передумови:

  • Встановлений ssh.
  • Є root-доступ або права sudo.

Копіювання файлів з локального хосту на віддалений

Для передачі файлу з вашої локальної системи на віддалений хост, використовуйте наступний синтаксис:

scp <параметри> <шлях_до_локального_файлу> <віддалений_користувач>@<ip_адреса_віддаленого_хосту>:<шлях_збереження_на_віддаленому_хості>

Наприклад:

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

У цьому прикладі:

  • test.txt – ім’я файлу, який копіюється, знаходиться в поточному каталозі.
  • test – ім’я користувача на віддаленій системі.
  • 139.144.11.105 – IP-адреса віддаленої системи.
  • /home/remote2/Documents/ – місце збереження файлу на віддаленій системі.

Копіювання файлів з віддаленого хосту на локальний

Щоб скопіювати файл з віддаленого сервера на вашу локальну машину, використовуйте такий синтаксис:

scp <параметри> <віддалений_користувач>@<ip_адреса_віддаленого_хосту>:<шлях_до_файлу_на_віддаленому_хості> <шлях_збереження_файлу_локально>

Наприклад:

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

У цьому прикладі:

  • test – ім’я користувача на віддаленому хості.
  • 10.10.11.113 – IP-адреса віддаленого хосту.
  • /home/test/test1.py – шлях до файлу на віддаленому хості.
  • ~/test1.py – ім’я файлу та місце збереження на локальній машині.

Передача файлів між двома віддаленими хостами

Команда scp дозволяє передавати файли не тільки між локальною та віддаленою системами, але й між двома віддаленими серверами. Перед передачею файлів між двома віддаленими системами, рекомендується створити SSH приватний та публічний ключі на джерельному сервері та скопіювати публічний ключ на цільову систему.

Щоб уникнути помилки “Не вдалося перевірити ключ хоста”, використовуйте SSH-ключ як додатковий захист. Ось як це можна зробити:

1. Створіть пару ключів на вихідному сервері:

ssh-keygen -t <алгоритм_шифрування>

2. Зазвичай використовується алгоритм rsa.

3. Виберіть місце для збереження ключа.

4. Можна встановити парольну фразу або залишити її порожньою.

5. Скопіюйте публічний ключ на цільовий сервер:

ssh-copy-id <ім'я_користувача>@<ip_адреса_призначення>

Безпарольний вхід працюватиме тільки для користувача, для якого створено ключ SSH.

6. Після налаштування SSH-ключа, використовуйте наступний синтаксис для передачі файлів:

scp <параметри> <віддалений_користувач_1>@<ip_адреса_віддаленого_хосту_1>:<шлях_до_файлу_на_хості_1> <віддалений_користувач_2>@<ip_адреса_віддаленого_хосту_2>:<шлях_збереження_на_хості_2>

Наприклад:

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 <шлях_до_файлу_1> <шлях_до_файлу_2> <віддалений_одержувач>@<ip_адреса_віддаленого_хосту>:<шлях_збереження_на_віддаленому_хості>

Наприклад:

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

У цьому прикладі:

  • -P 22 – вказує на підключення через порт 22.
  • test1.txt test2.py test3.sh test4.c – назви файлів для передачі.
  • remote_1 – ім’я користувача на хості-одержувачі.
  • 10.10.11.113 – IP-адреса хоста-одержувача.
  • /home/remote_1/Documents – шлях до місця збереження файлів.

Можна використовувати символи підстановки для передачі всіх файлів з однаковим розширенням:

scp <шаблон>.<розширення> <віддалений_одержувач>@<ip_адреса_віддаленого_хосту>:<шлях_збереження_на_віддаленому_хості>

Наприклад, для передачі всіх python файлів:

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 – вища швидкість передачі, особливо в мережах з високою затримкою.

Безпечна передача файлів з scp

Команда scp є важливим інструментом для безпечної та ефективної передачі файлів в Linux, особливо в умовах високої затримки мережі. Знання різних опцій та синтаксису scp допоможе вам в роботі. Перегляньте також наші статті про перейменування та видалення файлів в Linux, щоб вдосконалити свої навички. Сподіваємося, ця стаття допомогла вам навчитися використовувати команду scp. Якщо у вас є питання, задавайте їх в коментарях.