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