Ви коли-небудь хотіли передати деякі файли через мережу комп’ютерів і стикалися з проблемами безпеки? Ну, ви не можете просто викинути свої файли в мережу і бажати, щоб вони залишалися в безпеці, як Червона Шапочка! Вам потрібні заходи безпеки. Ви повинні використовувати протокол передачі файлів, який гарантує, що ваші дані захищені від несанкціонованого доступу, перехоплення мережі, витоку даних та інших типів загроз.
Протокол безпечного копіювання (SCP) — це потужний мережевий протокол передачі файлів, який передає файли між різними машинами в мережі. У цій публікації в блозі ми ближче познайомимося з цим протоколом і дослідимо потенціал використання SCP з віддалених машин на локальні.
Як працює SCP?
SCP використовує SSH (Secure Shell) для передачі ваших файлів. Але що це взагалі означає? SSH — це мережевий протокол для безпечного та надійного віддаленого доступу до серверів. Він оснащений методами автентифікації, шифрування та перевірки цілісності переданих файлів даних. SCP покладається на ці функції безпеки та методи шифрування, надані SSH, для безпечної передачі файлів через мережу. Таким чином, ви можете використовувати SCP з віддаленого на локальний сервер для безпечного з’єднання та передачі файлів і бути впевненими в автентичності та конфіденційності ваших даних.
Використання SCP для передачі файлів; Чому і як?
Використання SCP від віддаленого до локального та SCP від локального до віддаленого є ефективним і гнучким способом передачі файлів. SCP пропонує деякі основні переваги для передачі файлів. Наприклад, SCP пропонує більш надійні заходи безпеки, ніж інші методи передачі файлів, такі як FTP. Іншим аспектом, яким SCP відрізняється від інших протоколів, є швидкість. SCP зазвичай набагато швидший за інші протоколи, такі як SFTP, і це чудовий інструмент для передачі файлів між машинами Linux.
Ви можете перемістити файли за допомогою SCP:
- З локальної машини на віддалену
- З віддаленої машини на локальну
- З віддаленої машини на іншу віддалену машину.
Тепер давайте перейдемо до фактичного використання синтаксису Linux 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 <шифр> |
Ви можете використовувати цю опцію, щоб повідомити SCP використовувати певний шифр. Наприклад, scp -c <aes128-ctr>.
|
| -v |
Ця опція надає вам крок за кроком процес.
|
| -l <обмеження в кілобайтах> |
Цей параметр дозволяє встановити обмеження на максимальну пропускну здатність. Наприклад, наступний приклад встановлює використання пропускної здатності на 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 від віддаленого до локального, scp від локального до віддаленого та SCP між двома віддаленими хостами. Але давайте не зупинятися на досягнутому і розглянемо ще один корисний приклад Linux scp.
1. Рекурсивне копіювання всього каталогу
Уявіть, що ви хочете передати цілий каталог з усіма файлами, які він містить. Передача цих файлів один за іншим займе дуже багато часу. Замість цього ви можете використати команду scp multiple files для рекурсивного копіювання каталогу:
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]
Чому б ви це робили?
У цих двох сценаріях ви можете використовувати синтаксис Linux scp, щоб установити обмеження на пропускну здатність:
- Перевантаження мережі: Якщо ваша мережа дуже перевантажена, обмеження пропускної здатності за допомогою scp може допомогти з розподілом мережевих ресурсів. Обмеження пропускної здатності за допомогою 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 — це швидкий і безпечний інструмент для передачі файлів між комп’ютерами. Ви можете використовувати scp від віддаленої до локальної, від локальної до віддаленої та навіть між двома віддаленими системами для передачі файлів. І хоча існують альтернативи SCP, які виконують адекватну роботу, як-от rsync, він перевершує їх у багатьох відношеннях, особливо щодо безпеки та швидкості. У цій публікації блогу ми говорили про SCP, варіанти його використання та альтернативи, а також надали шпаргалку для легкого доступу до часто використовуваного синтаксису.
FAQ
Чи є якісь проблеми безпеки, про які я повинен знати під час використання 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]
Після введення цієї команди вам буде запропоновано ввести пароль для серверів. Після цього ваш файл буде передано.