Ви коли-небудь хотіли передати файли через мережу комп'ютерів і зіткнулися з проблемами безпеки? Не можна просто кидати файли в мережу і сподіватися, що вони залишаться захищеними і безпечними, як Червона Шапочка! Вам потрібні заходи безпеки. Використовуйте протокол передачі файлів, який захищає ваші дані від несанкціонованого доступу, прослуховування мережі, витоків даних та інших загроз.
Secure Copy Protocol (SCP) - це потужний мережевий протокол передачі файлів, який передає файли між різними машинами в мережі. У цій статті ми детальніше познайомимось з цим протоколом і дослідимо можливості використання SCP для передачі файлів з віддаленої машини на локальну.
Як працює SCP?
SCP використовує SSH (Secure Shell) для передачі ваших файлів. Але що це взагалі означає? SSH — це мережевий протокол для безпечного доступу до серверів. Він забезпечений методами автентифікації, шифрування та перевірки цілісності передаваних файлів. SCP спирається на ці функції безпеки та методи шифрування SSH для безпечної передачі файлів через мережу. Таким чином, ви можете використовувати SCP для копіювання з віддаленої машини на локальну з впевненістю в автентичності та конфіденційності ваших даних.
Використання SCP для передачі файлів: чому і як?
Використання SCP для копіювання з віддаленої машини на локальну та навпаки — це ефективний і гнучкий спосіб передачі файлів. SCP має серйозні переваги для передачі файлів. Наприклад, SCP забезпечує кращий захист, ніж інші методи передачі файлів, такі як FTP. Ще одна відмінність SCP від інших протоколів — це швидкість. SCP зазвичай працює набагато швидше за інші протоколи, і це чудовий інструмент для передачі файлів між Linux-машинами.
Ви можете переміщувати файли за допомогою SCP:
- З локальної машини на віддалену машину
- З віддаленої машини на локальну машину
- З однієї віддаленої машини на іншу віддалену машину.
Тепер перейдемо до самого використання синтаксису SCP для передачі файлів. Перше, що вам потрібно зробити — це встановити SSH на обох комп'ютерах. Однак важливо знати, що SSH зазвичай уже встановлений на всіх Linux-машинах. Якщо це ваш випадок, ви можете пропустити ці кроки.
1. Налаштування SSH
Виконайте таку команду для встановлення SSH:
sudo apt install openssh-client
2. Генерування ключів SSH
Потім клієнтська машина повинна встановити SSH-з'єднання. Для безпечного з'єднання між клієнтом і сервером потрібна приватний та публічний ключі. Ця команда створює для вас SSH-пару ключів:
ssh-keygen
Під час виконання цієї команди вас, ймовірно, попросять надати ім'я для пари ключів і парольну фразу (це необов'язково). Після того як пара ключів створена, ви повинні скопіювати публічний ключ на сервер.
Тепер давайте розглянемо загальну структуру команди SCP:
scp [options] [source username@IP]:/[directory/file name] [destination username@IP]:/[directory]
- [параметри] > Це перша дужка може бути замінена різними параметрами команди SCP, до яких ми перейдемо пізніше.
- [ім'я користувача@IP] > Цю дужку слід замінити на ім'я користувача та IP-адресу локальної машини. Наприклад: [email protected]
- [папка/ім'я файлу] > Цю дужку замініть на розташування файлу, який ви хочете відправити.
- [ім'я користувача@IP призначення] > Цю дужку замініть на ім'я користувача та IP-адресу машини-одержувача.
- [папка] > Замініть цей розділ на потрібне розташування вашого файлу на віддаленій машині.
Тепер ви знаєте, як виглядає загальна команда. Давайте розглянемо всі корисні параметри команди SCP:
| Опція | Випадок використання |
| -C |
Використовуючи цей параметр, SCP стискає ваші файли під час їх передачі.
|
| -c <cipher> |
Ви можете використовувати цей параметр, щоб вказати SCP на використання конкретного шифру. Наприклад: scp -c <aes128-ctr>.
|
| -v |
Цей параметр показує вам покроковий процес передачі.
|
| -l <limit in kilobytes> |
Цей параметр дозволяє встановити ліміт на максимальну пропускну здатність. Наприклад, наступна команда встановлює використання пропускної спроможності 100 кб на секунду: scp -l 100
|
| -P |
Використовуючи цей параметр, ви можете змінити SSH-порт віддаленого сервера, з яким хочете підключитися. SCP за замовчуванням використовує порт 22.
|
| -S <назва програми> |
Ви можете використовувати цей параметр, щоб вибрати програму для підключення.
|
| -r |
Копіюйте цілий файл або каталог рекурсивно.
|
Передача файлів з SCP
Ви пам'ятаєте, що існує три типи передачі даних через SCP, правда? Тепер розглянемо кожен тип окремо. Спочатку визначимо завдання. У мене на робочому столі комп'ютера Linux є фото кота, і спочатку я хочу передати його на віддалений сервер Linux. Потім передам його назад на локальний комп'ютер. І нарешті, щасливий кіт переїде між двома віддаленими машинами.

SCP з локальної машини на віддалену
Ця команда передасть файл з локального комп'ютера на віддалений сервер:
scp [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Щоб використати scp з паролем, введіть пароль вашого віддаленого сервера. Готово.

SCP з віддаленої машини на локальну
Щоб зробити зворотне, не потрібно входити в термінал віддаленого сервера. На локальному комп'ютері введіть цю команду:
scp [username]@[IP address of the remote machine]:[path/to/the/file] [path/to/the/location]
Як бачите, ми просто переставили дві частини команди місцями.

SCP між двома віддаленими машинами
Тепер передамо кота між двома віддаленими машинами. Для цього знадобиться пароль до обох серверів. Використайте цю команду:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]

Інші поширені команди SCP
Найпоширеніші команди SCP — це передача з віддаленого на локальний, з локального на віддалений і між двома віддаленими хостами. Але давайте піднімемо планку і розглянемо інші корисні приклади використання scp на Linux.
1. Рекурсивне копіювання всього каталогу
Припустимо, вам потрібно передати весь каталог зі всіма файлами. Передавати файли один за одним було б дуже довго. Замість цього скористайтеся командою для передачі кількох файлів, щоб скопіювати каталог рекурсивно:
scp -r [Path/to/directory] [username of the remote server]@[Ip address]:/[path/to/the/location]
Це корисно в багатьох ситуаціях:
- Розгортання коду: під час розгортання коду або веб-додатків вам може знадобитися передати весь каталог з усіма його компонентами, включаючи файли та скрипти.
- Резервна копія та синхронізація: Якщо вам потрібна резервна копія цілого каталогу або ви хочете синхронізувати два каталоги на локальній машині та віддаленому сервері, копіюйте все рекурсивно.
- Міграція системи: Під час міграції системи критично важливо скопіювати і передати всю важливу інформацію. Команда SCP з опцією -r гарантує, що ви нічого не пропустите в процесі переносу.
2. Обмеження пропускної спроможності
Якщо хочете контролювати швидкість передачі даних, скористайтеся такою командою:
scp -l <limit> [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Навіщо це робити?
У цих двох сценаріях можна використати синтаксис scp на Linux, щоб обмежити пропускну спроможність:
- Перевантаження мережі: Якщо ваша мережа сильно перевантажена, обмеження пропускної спроможності через scp допомагає більш рівномірно розподілити мережні ресурси. Це гарантує, що інші мережні операції працюють без проблем. Це особливо важливо при передачі файлів через спільну мережу, коли ваш процес може негативно вплинути на роботу інших користувачів.
- Фонові передачі: Під час фонових передач через SCP, таких як автоматичне резервне копіювання або синхронізація, ці завдання можуть інтенсивно використовувати мережні ресурси. У цьому випадку обмежте пропускну спроможність цих процесів, щоб краще керувати ресурсами.
3. Детальний журнал подій
Опція -v в SCP видасть детальний журнал додаткової інформації про процес передачі. Використайте цю команду для отримання детальних відомостей:
scp -v [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Ось чому варто пам'ятати й використовувати цю команду:
- Усунення несправностей: Ця опція показує прогрес передачі в реальному часі. Ви бачите інформацію про розмір файлу та відсоток завершення. Вона також виводить повідомлення про помилки та попередження. Комбінуючи ці дані, ви можете контролювати процес передачі та усувати проблеми, коли необхідно.
4. Вказання порту SSH
Синтаксис Linux scp з опцією -P дозволяє вам змінити порт SSH. Ось команда для цього:
scp -P [port number] [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Це може бути корисно для:
- Конфігурація брандмауера: Якщо порт SSH за замовчуванням обмежений або ви хочете приховати сервіс SSH від потенційних загроз, ви можете змінити порт SSH.
Чи існують альтернативи SCP?
SCP швидкий і безпечний, а знаючи правильний синтаксис Linux scp і маючи базові знання з усування проблем, він може бути єдиним інструментом, який вам потрібен. Проте не буде гарною ідеї переглянути його альтернативи.
1. rsync
rsync — це універсальний інструмент передачі файлів з розширеними можливостями синхронізації, поточними передачами та можливістю копіювання локально і на віддалену машину. Він також може зменшити використання пропускної здатності, передаючи лише різниці між вихідними та цільовими файлами. Ще однією перевагою rsync є те, що він може продовжити переривані передачі файлів з того місця, де вони були зупинені.
rsync переваги
- Ефективна синхронізація файлів і папок.
- Підтримує алгоритм дельта-передачі, що зменшує обсяг даних.
- Може відновити переривані передачі.
rsync Мінуси
- Потрібна установка rsync на обох системах — вихідній та цільовій.
- Вимагає більше налаштувань і опцій команди порівняно з scp.
2. SFTP (протокол передачі файлів SSH)
SFTP забезпечує безпечний спосіб передачі файлів через SSH. Він пропонує функціональність, подібну до FTP, але працює через зашифроване з'єднання SSH, як і SCP. Однак у деяких аспектах переваги SFTP перевищують переваги SCP. SCP не може генерувати списки каталогів, створювати або видаляти каталоги тощо. SFTP навпаки може виконувати всі ці операції.
SFTP переваги
- Безпечна передача файлів з шифруванням.
- Можливості управління файлами на віддаленій машині.
- Широка доступність на більшості систем Linux і Unix.
SFTP Недоліки
- Синтаксис команд та використання відрізняються від традиційного FTP.
- Може мати обмежену підтримку на деяких вбудованих системах або пристроях.
3. FTP (протокол передачі файлів)
FTP — це широко використовуваний стандартний протокол передачі файлів. Він працює за моделлю клієнт-сервер і пропонує базову функціональність передачі файлів.
FTP переваги
- Широка підтримка на різних платформах.
- Доступні знайомі клієнти командного рядка та графічного інтерфейсу.
Недоліки FTP
- Відсутнє шифрування, менш безпечний порівняно з scp та sftp.
- Може потребувати додаткового налаштування брандмауера для встановлення з'єднань.
- Аутентифікація в відкритому текстовому форматі.
На практиці, хоча scp — простий і надійний вибір для безпечної передачі файлів через SSH, альтернативи на кшталт rsync, sftp та FTP можуть дати додаткові можливості й гнучкість залежно від ваших потреб.
Як вибрати потрібний варіант? Врахуйте фактори безпеки, потреби синхронізації, простоту використання та сумісність із вашими системами й протоколами. Наприклад, якщо безпека й конфіденційність даних — найважливіші критерії, то FTP — поганий вибір.
Висновок
SCP — швидкий і безпечний інструмент для передачі файлів між комп'ютерами. Ви можете копіювати файли з віддаленого сервера на локальний, з локального на віддалений і навіть між двома віддаленими системами. Хоча є альтернативи, такі як rsync, що справляються задовільно, SCP перевершує їх у багатьох аспектах, особливо за безпекою й швидкістю. У цій статті ми розглянули SCP, його випадки використання, альтернативи й надали шпаргалку для швидкого доступу до часто використовуваного синтаксису.
Часто задавані питання
Чи слід мені турбуватися про безпеку під час використання SCP для передачі файлів з віддаленої машини на локальну?
SCP — досить безпечний інструмент, тож можете не хвилюватися про загрози безпеці під час його використання. Проте завжди варто застосовувати додаткові заходи безпеки, де це можливо.
Які поширені помилки виникають при використанні SCP для копіювання з віддаленої машини на локальну?
При передачі файлів з віддаленого сервера на локальний комп'ютер через SCP користувачі можуть зіткнутися з кількома помилками. Ось дві найпоширеніші при передачі SCP з віддаленого сервера:
- Файл чи папка не знайдені — ця помилка виникає, коливи вказали неправильний номер порту, неправильні дозволи доступу до файлу або невірні дані для входу.
- Верифікація ключа хоста не пройшла — ця помилка з'являється, коли ключ хоста змінився внаслідок оновлення сервера. Ключ хоста показує, що ви вже підключалися до цього сервера раніше. Якщо верифікація не пройшла, це означає, що ідентичність сервера змінилася. Ця помилка захищає вас від підключення до підробленого сервера.
Як використовувати SCP для передачі файлів між віддаленими системами?
Щоб успішно передати файли між системами через SCP, обидва комп'ютери повинні бути доступні через SSH. Вам також знадобиться IP-адреса й пароль віддалених машин. Решта — просто вивести правильну команду SCP:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]
Після введення цієї команди система попросить вас ввести пароль серверів. Після цього файл буде передано.