Копіювання файлів через SSH: Повний посібник з SCP, rsync та SFTP
SSH (Secure Shell) — це основа безпечного управління віддаленим сервером. Незалежно від того, чи ви розробник, який розгортає код, адміністратор систем, який керує інфраструктурою, чи досвідчений користувач, який обслуговує середовище VPS Hosting, передача файлів безпечно між машинами — це завдання, яке ви будете виконувати постійно.
Цей комплексний посібник охоплює кожен основний метод копіювання файлів через SSH — включаючи SCP, rsync, SFTP та автоматизацію на основі ключів — з синтаксисом реального світу, практичними прикладами та експертними порадами, які допоможуть вам працювати швидше та безпечніше.
Чому використовувати SSH для передачі файлів?

Перш ніж переходити до інструментів, варто зрозуміти, чому передача файлів на основі SSH є галузевим стандартом для адміністраторів серверів і розробників.
- Наскрізне шифрування: Кожен байт даних — включаючи облікові дані, команди та вміст файлів — шифрується під час передачі за допомогою сучасних криптографічних алгоритмів. Це робить передачу SSH імунною до перехоплення пакетів і атак типу «людина посередині».
- Не потрібне додаткове програмне забезпечення: SSH попередньо встановлено практично на кожній системі Linux/Unix і нативно доступний на Windows 10+ та macOS.
- Універсальність: Одне SSH-з’єднання може обробляти інтерактивні сеанси оболонки, передачу файлів, перенаправлення портів і автоматизовані скрипти.
- Зручність для автоматизації: SSH безперебійно інтегрується з завданнями cron, конвеєрами CI/CD та скриптами резервного копіювання, забезпечуючи повністю автоматизовану передачу файлів без пароля.
- Надійність: SSH-з’єднання витримують переривання мережі, особливо в поєднанні з інструментами на кшталт rsync.
Метод 1: Копіювання файлів за допомогою SCP (Secure Copy Protocol)

SCP — це найпростіший та найширше використовуваний інструмент для одноразового передавання файлів через SSH. Він працює, використовуючи вашу існуючу SSH-з’єднання для безпечного копіювання файлів між хостами.
1) Базовий синтаксис SCP
scp [options] [source] [destination]2) Завантажити файл з локальної машини на віддалений сервер
scp /path/to/local/file username@remote_host:/path/to/remote/destinationРозшифровка:
| /path/to/local/file | файл, який ви хочете передати на вашій локальній машині |
| username@remote_host | ваше SSH-ім’я користувача та ім’я хоста сервера або IP-адреса |
| /path/to/remote/destination | цільовий каталог або шлях до файлу на віддаленому сервері |
3) Завантажити файл з віддаленого сервера на локальну машину
scp username@remote_host:/path/to/remote/file /path/to/local/destinationПросто поміняйте місцями джерело та призначення, щоб отримати файл з сервера на вашу локальну машину.
4) Копіювати весь каталог рекурсивно
scp -r /path/to/local/directory username@remote_host:/path/to/remote/destinationПрапор -r наказує SCP копіювати каталог та весь його вміст рекурсивно, включаючи вкладені підкаталоги.
5) Корисні параметри SCP
| Параметр | Опис |
|---|---|
| -P [port] | Вказати користувацький SSH-порт (зверніть увагу: великі літери -P, на відміну від малих літер -p у SSH) |
| -C | Увімкнути стиснення для швидшого передавання через повільні з’єднання |
| -i [identity_file] | Використовувати конкретний SSH-приватний ключ для автентифікації |
| -l [limit] | Обмежити використання пропускної здатності в Kbit/s |
| -q | Тихий режим — приховати вивід прогресу |
| -v | Детальний режим — корисно для налагодження проблем з з’єднанням |
6) Коли використовувати SCP
SCP ідеальний для швидкого, одноразового передавання файлів, де простота має значення. Він не потребує конфігурації та працює з коробки на будь-якій системі з встановленим SSH. Однак для великих каталогів або повторних передавань rsync — значно кращий вибір.
Метод 2: Копіювання файлів за допомогою rsync

rsync — це професійний вибір для синхронізації та передачі файлів через SSH. Його найсильнішою особливістю є дельта-передача: замість копіювання цілих файлів, rsync аналізує джерело та призначення та передає лише змінені частини. Це економить величезну кількість часу та пропускної здатності при роботі з великими файлами або каталогами, які часто оновлюються.
1) Базовий синтаксис rsync
rsync [options] [source] [destination]2) Завантажити файл з локальної машини на віддалений сервер
rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination3) Синхронізувати весь каталог на віддалений сервер
rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/Важливо: Зверніть увагу на косу риску / після вихідного каталогу. З косою рискою rsync копіює вміст каталогу. Без неї rsync копіює сам каталог як підкаталог призначення.
4) Дзеркалювання каталогу (видалення файлів, видалених з джерела)
rsync -avz --delete /path/to/local/directory/ username@remote_host:/path/to/remote/destination/Прапор –delete гарантує, що файли, видалені з джерела, також видаляються з призначення, зберігаючи обидві локації ідеально синхронізованими.
5) Використання користувацького порту SSH
rsync -avz -e "ssh -p 2222" /path/to/local/directory/ username@remote_host:/path/to/remote/destination/6) Корисні параметри rsync
| Параметр | Опис |
|---|---|
| -a | Режим архіву: зберігає дозволи, часові мітки, символічні посилання та власність |
| -v | Детальний режим: відображає прогрес передачі файл за файлом |
| -z | Стиснення: зменшує обсяг даних, переданих по мережі |
| –delete | Видаляє файли на призначенні, які більше не існують на джерелі |
| –progress | Показує прогрес у реальному часі для кожного файлу |
| –exclude | Виключити конкретні файли або шаблони (наприклад, –exclude ‘*.log’) |
| -n або –dry-run | Імітувати передачу без фактичного копіювання |
| -e “ssh -p [port]” | Вказати користувацький порт SSH |
| –bwlimit=[KB/s] | Обмежити швидкість передачі, щоб не перевантажити ваше з’єднання |
7) Коли використовувати rsync
Використовуйте rsync для резервних копій, розгортання та будь-яких повторюваних завдань синхронізації. Це особливо потужно при управлінні великими кодовими базами, медіа-бібліотеками або експортом баз даних на Dedicated Server, де ефективність пропускної здатності та цілісність даних є критичними.
Метод 3: Копіювання файлів між двома віддаленими серверами

Менш відома, але надзвичайно корисна можливість як SCP, так і rsync — це здатність передавати файли безпосередньо між двома віддаленими серверами — без маршрутизації даних через вашу локальну машину. Це неоцінно при міграції серверів або синхронізації даних між хмарними екземплярами.
1) Копіювання файлів між двома віддаленими серверами за допомогою SCP
scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination2) Копіювання файлів між двома віддаленими серверами за допомогою rsync
rsync -avz username1@remote_host1:/path/to/source/ username2@remote_host2:/path/to/destination/Примітка: Щоб передача між серверами працювала, вихідний сервер повинен мати можливість встановити SSH-з’єднання з сервером призначення. Можливо, вам потрібно буде налаштувати SSH-ключі на вихідному сервері або використовувати SSH agent forwarding (ssh -A).
3) Передача між серверами через SSH Tunneling (альтернативний метод)
Якщо прямий SSH між серверами неможливий через обмеження брандмауера, ви можете передавати дані через вашу локальну машину, використовуючи tar та ssh:
ssh username1@remote_host1 "tar czf - /path/to/source" | ssh username2@remote_host2 "tar xzf - -C /path/to/destination"Це передає стиснений архів з сервера 1 безпосередньо на сервер 2 через вашу локальну сесію терміналу.
Метод 4: Копіювання файлів за допомогою SFTP (SSH File Transfer Protocol)

SFTP забезпечує інтерактивний, подібний до FTP досвід через зашифровану SSH-з’єднання. На відміну від SCP, який є однокомандним інструментом, SFTP відкриває постійну сесію, де ви можете інтерактивно переглядати каталоги, завантажувати, скачувати, перейменовувати та видаляти файли.
1) Запуск сесії SFTP
sftp username@remote_hostВи потрапите на запит SFTP (sftp>), з якого можете виконувати такі команди:
2) Основні команди SFTP
| Команда | Опис |
|---|---|
| ls | Список файлів у поточному віддаленому каталозі |
| lls | Список файлів у поточному локальному каталозі |
| cd /remote/path | Змінити віддалений каталог |
| lcd /local/path | Змінити локальний каталог |
| put /local/file /remote/destination | Завантажити файл на віддалений сервер |
| get /remote/file /local/destination | Скачати файл з віддаленого сервера |
| mput *.txt | Завантажити кілька файлів за шаблоном |
| mget *.log | Скачати кілька файлів за шаблоном |
| mkdir /remote/newdir | Створити каталог на віддаленому сервері |
| rm /remote/file | Видалити файл на віддаленому сервері |
| exit або quit | Закрити сесію SFTP |
3) Підключення до користувацького SSH-порту через SFTP
sftp -P 2222 username@remote_host4) Коли використовувати SFTP
SFTP найкраще підходить для інтерактивних сеансів управління файлами — наприклад, коли вам потрібно переглядати структуру віддаленого каталогу, вибірково скачувати файли журналів або завантажувати файли конфігурації на веб-сервер. Багато графічних клієнтів (таких як FileZilla, Cyberduck та WinSCP) використовують SFTP як базовий протокол, що робить його доступним також для нетехнічних користувачів.
Метод 5: Автоматизація передачі файлів за допомогою автентифікації SSH Key

Ручне введення пароля для кожної передачі файлів неефективно і несумісно з автоматизацією. Автентифікація на основі SSH ключів вирішує цю проблему, дозволяючи безпарольні, криптографічно безпечні входи — необхідна умова для будь-якого автоматизованого резервного копіювання або робочого процесу розгортання.
1) Генерування пари SSH ключів
На вашій локальній машині запустіть:
ssh-keygen -t ed25519 -C "your_email@example.com"Примітка: ed25519 — це сучасний, рекомендований алгоритм. Використовуйте -t rsa -b 4096, якщо вам потрібна сумісність зі старішими системами.
Дотримуйтесь підказок, щоб зберегти ключ (місцезнаходження за замовчуванням: ~/.ssh/id_ed25519) і за бажанням встановіть парольну фразу для додаткової безпеки.
2) Копіювання вашого публічного ключа на віддалений сервер
ssh-copy-id username@remote_hostЦе додає ваш публічний ключ до файлу ~/.ssh/authorized_keys на віддаленому сервері. Вам буде запропоновано ввести пароль в останній раз.
Якщо ssh-copy-id недоступна, ви можете зробити це вручну:
cat ~/.ssh/id_ed25519.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"3) Тестування автентифікації без пароля
ssh username@remote_hostЯкщо ви підключаєтесь без запиту пароля, автентифікація на основі ключів працює правильно.
4) Автоматизація передачі за допомогою Shell скрипту
З налаштованим безпарольним SSH ви можете тепер автоматизувати передачу файлів у завданнях cron або скриптах:
#!/bin/bash
# Daily backup script
rsync -avz --delete /var/www/html/ username@backup_server:/backups/www/Додайте це до вашого crontab (crontab -e), щоб запускати щоночі:
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1Усунення типових проблем передачі файлів SSH

Навіть досвідчені адміністратори стикаються з проблемами. Ось найпоширеніші проблеми та їх рішення:
Permission Denied (publickey)
- Перевірте, що публічний ключ правильно додано до ~/.ssh/authorized_keys на віддаленому сервері
- Перевірте, що ~/.ssh має дозволи 700 і authorized_keys має дозволи 600
- Підтвердьте, що SSH демон дозволяє аутентифікацію за ключем (PubkeyAuthentication yes у /etc/ssh/sshd_config)
Connection Refused
- Перевірте, що служба SSH запущена: systemctl status sshd
- Перевірте, що використовується правильний порт
- Перегляньте правила брандмауера: ufw status або iptables -L
Швидкість передачі повільна
- Увімкніть стиснення: додайте -C до SCP або -z до rsync
- Використовуйте швидший шифр: ssh -c aes128-ctr (менш безпечно, але швидше на каналах з високою затримкою)
- Для великих передач розгляньте rsync з –bwlimit, щоб уникнути перевантаження мережі
Host Key Verification Failed
- Відбиток SSH ключа віддаленого сервера змінився (може вказувати на проблему безпеки або перебудову сервера)
- Видаліть старий ключ: ssh-keygen -R remote_host
- Повторно підключіться і перевірте новий відбиток перед його прийняттям
Вибір правильного інструменту: SCP vs. rsync vs. SFTP

| Функція | SCP | rsync | SFTP |
|---|---|---|---|
| Простота використання | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Дельта-передачі | ❌ | ✅ | ❌ |
| Синхронізація каталогів | ✅ (рекурсивна) | ✅ (з –delete) | ✅ (вручну) |
| Інтерактивний режим | ❌ | ❌ | ✅ |
| Автоматизація | ✅ | ✅ | ✅ (зі скриптами) |
| Ефективність пропускної здатності | Низька | Висока | Низька |
| Найкраще для | Швидкі одноразові передачі | Резервні копії та синхронізація | Інтерактивний перегляд |
Захист ваших SSH передач файлів: найкращі практики

Незалежно від того, який інструмент ви використовуєте, дотримуйтесь цих найкращих практик безпеки для захисту ваших серверів та даних:
- Вимкніть аутентифікацію за паролем — Використовуйте виключно SSH ключі та встановіть PasswordAuthentication no у /etc/ssh/sshd_config
- Змініть порт SSH за замовчуванням — Перехід з порту 22 значно зменшує автоматизовані спроби перебору
- Використовуйте fail2ban — Автоматично блокуйте IP-адреси, які повторно не пройшли аутентифікацію
- Обмежте доступ SSH за IP — Використовуйте правила брандмауера або директиви AllowUsers для обмеження того, хто може підключатися
- Тримайте SSH в актуальному стані — Регулярно оновлюйте OpenSSH для усунення відомих вразливостей
- Використовуйте надійні алгоритми ключів — Віддавайте перевагу ed25519 або rsa-4096 замість старіших, слабших алгоритмів
- Захистіть ваші веб-додатки — Поєднайте безпеку SSH з SSL сертифікатом для шифрування всього трафіку до ваших веб-сервісів
Часто задавані питання

1) Яка різниця між SCP та SFTP?
SCP — це неінтерактивний інструмент командного рядка, розроблений для швидких одноразових передач файлів. SFTP — це інтерактивний протокол, який дозволяє переглядати, керувати, завантажувати та скачувати файли в інтерфейсі на основі сеансу. Обидва використовують SSH для шифрування.
2) Чи можу я використовувати rsync без SSH?
Так — rsync має власний режим демона, який працює без SSH, але він менш безпечний. Для будь-якої передачі, доступної в Інтернеті, завжди використовуйте rsync через SSH (rsync -e ssh).
3) Як передати файли, якщо мій сервер використовує нестандартний порт SSH?
Використовуйте прапор -P з SCP (scp -P 2222) або опцію -e “ssh -p 2222” з rsync. Для SFTP використовуйте sftp -P 2222.
4) Чи застарілий SCP?
Розробники OpenSSH зазначили, що базовий протокол SCP має обмеження і рекомендують використовувати SFTP або rsync для нових робочих процесів. Однак SCP залишається широко доступним і функціональним практично на всіх системах.
Висновок

Оволодіння передачею файлів на основі SSH є важливою навичкою для всіх, хто керує серверами, розгортає додатки або обслуговує віддалену інфраструктуру. Кожен інструмент має своє призначення:
- SCP — ваш вибір для швидких, простих одноразових передач
- rsync — незамінний для резервних копій, розгортання та ефективної синхронізації великих наборів даних
- SFTP відмінно працює в інтерактивних сеансах, коли вам потрібно переглядати та керувати файлами на льоту
Поєднання цих інструментів з автентифікацією SSH-ключів та надійними практиками безпеки дає вам надійний, автоматизований та безпечний робочий процес передачі файлів, який масштабується від одного облікового запису Shared Web Hosting аж до складних багатосерверних архітектур на Dedicated Servers.
Якщо ви шукаєте надійне, високопродуктивне середовище хостингу, щоб застосувати ці навички на практиці, дослідіть плани VPS Hosting AlexHost — розроблені для розробників та системних адміністраторів, які вимагають повного доступу root, SSD-сховища та мережевої підключення корпоративного рівня.
на всіх хостингових послугах