Чи доводилося вам передавати файли між комп’ютерами у мережі, але ви не знали, як зробити це швидко та надійно?
FTP (File Transfer Protocol) – це протокол, який використовується для передачі файлів між клієнтом і сервером через мережу, зазвичай Інтернет.
У цій статті розповідаємо, що це за протокол, навіщо потрібен і як працює, а ще – пробуємо запустити свій FTP-сервер на Windows і Linux.
Коли інтернет тільки перетворювався на глобальну мережу, з’явилася нова потреба – передавати файли з одного комп’ютера на інший на відстані. Тоді ще не було варіанту просто завантажити їх в умовний телеграм і скинути другу. Тому 1971 року придумали протокол FTP.
FTP розв’язував головну проблему – швидко і надійно передавати файли по Мережі. А великої популярності він набув через свою простоту: для доступу до іншого комп’ютера потрібні були тільки логін і пароль.
Що таке FTP
FTP – це протокол для передачі даних через інтернет. Абревіатура розшифровується як File Transfer Protocol, у перекладі – «протокол передачі даних». З його допомогою можна завантажити або відправити що завгодно: відео, музику, програми, зображення.
У процедурі передачі файлів беруть участь два гравці – клієнт і сервер. Перший надсилає запит у вигляді команди, а другий обробляє її і повертає відповідь у вигляді файлу або повідомлення про помилку. При цьому сервером може бути і звичайний ПК, а не тільки класичний веб-сервер.
Щоб упевнитися, що клієнт може завантажувати файли, під час підключення сервер просить ввести логін і пароль. Але це не завжди обов’язково – FTP підтримує й анонімний режим, коли підключитися до сервера можна без авторизації.
Давайте подивимося, як працює FTP на прикладі життєвої ситуації.
Припустимо, ви працюєте програмістом в IT-компанії. Весь код і всі файли зберігаються в локальному сховищі – на внутрішньому сервері, який доступний тільки співробітникам. Щоб почати роботу, потрібно перенести робочі файли собі на комп’ютер, а для цього – підключитися до сервера.
Завдання зрозуміле – відкриваємо консоль і встановлюємо з’єднання через FTP для доступу до сховища. Перед цим потрібно запросити логін і пароль від нього, інакше не вдасться підключитися. Щойно ви авторизуєтеся, вам будуть доступні всі файли на сервері – або ті, до яких вам видадуть доступ. Щоб завантажити їх, потрібно ввести ще кілька команд і дочекатися завантаження. Готово!
Звісно, сьогодні обмін робочими файлами відбувається набагато швидше і зручніше за допомогою Git, який використовує більш сучасні протоколи – наприклад, SSH і HTTP. Але бувають ситуації, коли потрібно розгорнути той самий Git-репозиторій на FTP-сервері, – і тоді вже без цього дідка нікуди.
Відмінність FTP від HTTP
В інтернеті є два популярні протоколи для передачі даних: FTP і HTTP. Обидва вирішують приблизно однакові завдання, але все ж таки різняться в призначенні.
FTP спочатку створювався для обміну даними між комп’ютерами. Він використовує два з’єднання: одне для передачі, а інше – для управління. Ідея в тому, що FTP вміє стежити, як виконуються довгі запити – наприклад, передача великих файлів або управління даними на сервері.
HTTP заточений на передачу гіпертекстових документів – тобто сайтів і веб-сторінок. Він використовує лише одне з’єднання, яким запити літають між клієнтом і сервером. Йому не потрібно влаштовувати довгі сеанси обміну даними: просто віддав потрібну сторінку і забув.
Інакше кажучи, FTP орієнтований на довгу і «вдумливу» взаємодію сервера і клієнта: він пам’ятає, хто, кому, коли і що передав. У HTTP інше завдання – керувати запитами в інтернеті. На відміну від FTP, він не зберігає стан сесії, зате працює швидше – а це якраз те, що потрібно для вебу.
На відміну від звичайного FTP, SFTP для роботи потрібен один мережевий порт: SSH вміє розділяти його на кілька каналів, один з яких виділяється під управління, а інший – під передачу даних.
А ще передача по SFTP захищена за допомогою спеціальних SSH-ключів: один на стороні клієнта шифрує трафік, а інший, на стороні сервера, його дешифрує.
Плюси і мінуси FTP
Ось три головні завдання, для вирішення яких вам може знадобитися FTP:
- Передавати файли на інші комп’ютери. Це зручно, коли вам потрібно, наприклад, завантажити файли на сервер сайту або відправити відео другу. Просто підключилися, відправили, залишилися задоволені.
- Резервне копіювання. Щоб не втратити файли, ви можете зробити їх бекап на віддалений комп’ютер.
- Віддалений доступ до файлів. FTP можна перетворити на заміну Google Drive: беремо віддалений комп’ютер, завантажуємо туди файли і дістаємо в міру необхідності.
Тепер про те, чому використання FTP може бути не найвдалішою ідеєю:
- Відсутність адекватного захисту. Коли ви підключаєтеся до сервера, дані надсилаються мережею в незашифрованому вигляді: зокрема, логіни, паролі та самі файли. Крім того, в FTP немає жодного захисту від брутфорсу – тобто пароль до сервера можна підібрати звичайним перебором.
- Неефективна передача файлів. Для кожної операції передачі FTP вимагає встановлення нового з’єднання. Якщо ви хочете передавати кілька файлів одночасно, це може призвести до затримок і збільшення навантаження на мережу – особливо при передачі великих файлів.
- Розрив з’єднання при помилці. Якщо передача даних перерветься з якоїсь причини, то весь процес доведеться починати спочатку.
Необхідність FTPS и SFTP
Щоб вирішити проблеми безпеки, в FTP згодом все ж придумали шифрувати запити – так з’явилися захищені протоколи FTPS і SFTP. Давайте подивимося, чим вони відрізняються один від одного.
FTPS
FTPS – це розширення протоколу FTP, яке використовує сертифікати SSL і TLS. Розшифровується він як File Transfer Protocol Secure, українською – «захищений протокол передачі даних».
Протокол працює так само, як і звичайний FTP, але під час підключення клієнт і сервер обмінюються сертифікатами. Вони є своєрідним договором, що все пройде безпечно і конфіденційно.
Сертифікати можна отримати в центрі сертифікації, а можна – створити свої. Перші гарантуватимуть надійність, а другі – сприйматимуться системою з підозрою.
SFTP
SFTP – це ще одне розширення для протоколу FTP, яке для роботи використовує протокол SSH. Розшифровується як Secure File Transfer Protocol, що теж перекладається як «захищений протокол передачі даних».
На відміну від звичайного FTP, SFTP для роботи потрібен один мережевий порт: SSH вміє розділяти його на кілька каналів, один з яких виділяється під управління, а інший – під передачу даних.
А ще передача по SFTP захищена за допомогою спеціальних SSH-ключів: один на стороні клієнта шифрує трафік, а інший, на стороні сервера, його дешифрує.
Обидва протоколи стали хорошим доповненням до FTP. Під час вибору одного з них потрібно враховувати особливості вашого проєкту. Наприклад, якщо у вас уже є SSL-сертифікат, то зручніше буде використовувати FTPS. А якщо сертифіката немає і купувати його не хочеться – вибирайте SFTP.
Як передавати файли по FTP
Як ми з’ясували раніше, для роботи FTP-протоколу потрібні двоє – клієнт і сервер. Клієнт під’єднується до сервера і надсилає йому команди, щоб завантажити або скачати файли.
Щоб підключитися до сервера, потрібно знати його IP-адресу, а ще – логін і пароль для авторизації. Логін і пароль задаються на стороні сервера під час його налаштування. IP-адресу теж можна дізнатися на сервері – наприклад, у консолі Windows це робиться за допомогою команди ipconfig.
Авторизація за FTP-протоколом
FTP підтримує два способи авторизації: логін-парольовий і анонімний. Анонімний режим доступний на будь-якому FTP-сервері: він потрібен, щоб робити деякі файли загальнодоступними.
Наприклад, ви можете викласти картинку на FTP-сервер і розіслати її своїм друзям, але водночас видати їм дані тільки від анонімного режиму, щоб вони не побачили всі файли на сервері.
Авторизація для анонімного режиму схожа на логін-парольову. Але замість логіна потрібно ввести слово anonymous, а замість пароля – будь-яку адресу електронної пошти або залишити поле порожнім.
Анонімний режим – це рудимент, який залишився з часів Unix-систем. Тоді скрізь була логін-парольова авторизація, а інших способів ще не придумали.
Коли у нас є IP-адреса, логін і пароль, можна підключатися. Для цього знадобиться спеціальна програма – FTP-клієнт. Вона може як бути звичайним консольним додатком, так і мати графічний інтерфейс.
Щоб здійснити передачу, FTP-клієнт попросить нас підключитися до сервера, а потім авторизуватися. Ось так виглядає підключення до FTP-сервера через консоль Windows.
Подивитися, які файли знаходяться на сервері, можна, скориставшись наступною командою.
Щоб завантажити або завантажити файл, FTP-протокол використовує дві команди:
- PUT – для надсилання файлів із вашого комп’ютера на сервер;
- GET – для завантаження файлів із сервера на ваш комп’ютер.
Коли ви вводите одну з них, клієнт і сервер створюють з’єднання для передачі даних. Після цього файли діляться на пакети – невеликі шматочки розміром від 1 до 64 КБ, – а потім надсилаються за протоколом TCP/IP.
Якщо передача пройде успішно, FTP-клієнт виведе відповідне повідомлення. Але, якщо щось піде не так, передача даних зупиниться і на екрані з’явиться повідомлення про помилку – воно складатиметься з коду і короткого пояснення.
Закрити FTP-з’єднання можна такою командою.
Популярні FTP-клієнти
FTP-клієнтів існує чимало. Деякими з них можна користуватися безкоштовно, а за інші треба буде заплатити. Давайте розглянемо кілька найвідоміших сервісів.
FileZilla
Це популярний FTP-клієнт, який дає змогу зручно підключатися до віддалених серверів. У FileZilla простий інтерфейс і зрозуміле управління: освоїти його зможе навіть новачок.
У FileZilla є два головних вікна: одне показує файли і папки на вашому комп’ютері, а інше – директорію віддаленого FTP-сервера. Щоб перемістити файл з одного комп’ютера на інший, потрібно просто перетягнути його з лівого вікна в праве. Ось так просто це і працює.
У FileZilla є й інші функції – наприклад, вона підтримує синхронізацію даних у хмарі та передачу файлів через VPN. Для захищених з’єднань сервіс використовує сертифікати SSL і TLS.
Cyberduck
Це ще один FTP-клієнт із відкритим вихідним кодом. Він безкоштовний, але в ньому є все, що потрібно для нормальної роботи протоколу FTP.
Під час запуску клієнта він попросить підключити його до FTP-сервера, після чого виведе його вміст на екран. Щоб завантажити файл, потрібно просто перетягнути його з папки на комп’ютері в Cyberduck.
Є й просунуті можливості – наприклад, закладки для часто використовуваних серверів, завантаження в хмару та інтеграція з текстовими редакторами. Ще до Cyberduck можна підключити шифрування.
CuteFTP
Ще один популярний FTP-клієнт. Він дуже схожий на FileZilla, але головна відмінність у тому, що він платний. CuteFTP часто використовують у комерційній розробці, тому що він підтримує просунуті функції – наприклад, планування і синхронізацію файлів.
Управління CuteFTP майже не відрізняється від FileZilla. Щоб перекинути файл з одного комп’ютера на інший, потрібно перетягнути його з лівого вікна в праве. А якщо ви хочете зашифрувати передачу, CuteFTP підтримує сертифікати SSL і TLS.
Хмарні сховища
Деякі популярні сервіси для хмарного зберігання даних можна використовувати як FTP-клієнти – наприклад, Google Drive, Dropbox і Microsoft OneDrive. Про те, як підключитися до FTP-сервера через ці клієнти, можна почитати в документації: Google, Dropbox, Microsoft.
FTP-сервер на Windows
Щоб створити FTP-сервер на Windows, потрібно мати версію системи Professional, Educational або Enterprise. На жаль, для домашньої версії доведеться встановлювати сторонні додатки. Якщо у вас стоїть потрібна версія операційної системи, залишається виконати кілька дій.
Вмикаємо FTP-компоненти
Першим кроком відкриваємо Панель керування.
Переходимо у вкладку Програми → Програми та компоненти. Тут обираємо пункт Увімкнення або вимкнення компонентів Windows:
З’явиться список, у якому потрібно поставити галочку біля пункту FTP-сервер, а також знайти пункт Служби IIS → Засоби керування веб-сайтом. Тут поставимо галочку біля пункту Сценарії та засоби управління IIS.
Натискаємо ОК і чекаємо, поки всі налаштування застосуються до Windows.
Створюємо FTP-сервер
Щоб використовувати сервер, нам знадобиться папка, в якій ми будемо зберігати всі файли. Створимо її на диску C і назвемо ftp.
Усередині неї можна створити кілька файлів і папок. Вони знадобляться, щоб перевірити правильність роботи FTP-сервера.
Тепер нам потрібно опублікувати наш сервер. Для цього відкриваємо Диспетчер служб IIS.
У вікні знаходимо зліва пункт сайти і клікаємо по ньому правою кнопкою миші. Вибираємо Додати FTP-сайт (тут головне не переплутати з веб-сайтом).
Тепер нам потрібно вказати дані нашого сервера. У полі Ім’я FTP-сайту вписуємо будь-яке ім’я, яке захочете, а у вкладці Фізичний шлях вказуємо шлях до нашої папки ftp. Тиснемо Далі.
Потім відкривається вікно з додатковими налаштуваннями. У розділі Прив’язка нічого не змінюємо, а в SSL вибираємо Без SSL. У майбутньому ви можете спробувати налаштувати сервер із шифруванням, але зараз нам треба розібратися, як запустити простий сервер.
В останньому вікні з налаштуваннями потрібно вибрати, яких користувачів пускати на сервер, і видати їм дозволи. Поставимо галочки для анонімних і звичайних користувачів, а нижче вкажемо, що вони зможуть читати і записувати дані.
Готово – наш сервер створено й опубліковано. Побачити його можна в списку всіх серверів.
Перевіряємо, як працює
Щоб зайти на FTP-сервер, потрібно спочатку отримати IP-адресу нашого комп’ютера. Для початку – відкриваємо консоль (можна просто вбити в пошуку cmd), а потім вводимо команду ipconfig.
Копіюємо адресу з графи IPv4-адреса. Далі відкриваємо провідник або будь-який FTP-клієнт і вводимо в адресному рядку ftp://[ваша IP-адреса]. Бачимо наші файлики.
А чи можна відкрити сервер, скажімо, в Google Chrome?
Раніше FTP-посилання відкривалися через браузер, але потім розробники веб-клієнтів стали один за одним прибирати підтримку цього протоколу – мовляв, занадто старий і небезпечний.
Рішення: знизити версію браузера – наприклад, у Chrome до 91-ї версії FTP ще можна було повернути, поставивши прапорець у пункті Enable support for FTP URLs у chrome://flags.
FTP-сервер на Linux
За замовчуванням у дистрибутивах Linux немає FTP-сервера, тому його потрібно встановити окремо. Для цього вводимо таку команду для версій Linux Ubuntu та Debian.
Для CentOS або Fedora команда трохи відрізнятиметься.
Далі нас попросять ввести пароль від облікового запису, а потім почнеться встановлення.
Після цього FTP-сервер одразу ж запуститься і до нього можна буде підключитися – наприклад, через браузер. Щоб це зробити, спочатку дізнаємося IP-адресу нашого комп’ютера за допомогою команди ifconfig (входить до пакета Net-tools, можливо, доведеться додатково встановити і його)
Звідси нам потрібно взяти адресу inet. У нашому випадку вона наступна: 192.168.0.47. У вас вона може відрізнятися. Хоча насправді вона необов’язкова – для FTP-сервера, запущеного на вашій локальній машині, можна використовувати псевдонім localhost.
Тепер запустимо vsftpd наступною командою.
Перевіримо, що наш ftp-сервер дійсно працює – і зробимо це в стилі Linux, тобто скористаємося командним рядком. Підключимося до сервера.
Тепер треба ввести ім’я користувача та пароль – вони збігаються з ім’ям користувача та його паролем у вашій ОС. Логінімося і перевіряємо за допомогою команди ls, у якій директорії ми опинилися і які файли та папки доступні на нашому FTP-сервері.
Тепер налаштуємо анонімний режим – щоб до нашого сервера можна було підключатися без логіна і пароля. Для початку зупинимо vsftpd (до речі, щоб вийти з режиму ftp у командному рядку, просто введіть після >ftp команду quit).
Сервер зупинено. Далі потрібно змінити файл /etc/vsftpd.conf. Зробити це можна, наприклад, за допомогою текстового редактора Nano.
У файлі, що відкрився, прокручуємо стрілками на клавіатурі до рядка anonymous_enable=NO.
Керування редактором Nano відбувається за допомогою поєднання клавіш. Змінюємо слово NO на YES, потім використовуємо поєднання клавіш Ctrl + O, а після – натискаємо Enter. Зміни внесено.
Щоб вийти, користуємося поєднанням клавіш Ctrl + X. Готово – тепер нам доступний анонімний режим. Щоб знову запустити сервер, вводимо таку команду.
Знову заходимо на ftp-сервер.
І… нас знову попросять залогінитися. Гей, а як же анонімність? А для цього є спеціальний користувач anonymous з порожнім паролем. Тож логінімося і насолоджуємося новим сервером.
Що запам’ятати
Давайте повторимо, що ми дізналися про протокол FTP:
- FTP – це протокол передавання даних мережею. Його створили 1971 року, щоб швидко та зручно передавати файли з одного комп’ютера на інший і керувати віддаленими серверами.
- Для роботи протоколу потрібні два елементи – клієнт і сервер. Клієнт під’єднується до сервера за допомогою логіна і пароля, а потім надсилає йому команди, щоб завантажувати або завантажувати файли.
- FTP передає дані в небезпечному режимі. Якщо хтось підключиться до вашої мережі, він зможе разом із вами завантажувати файли. Тому рекомендується використовувати безпечні розширення протоколу – FTPS або SFTP.
Висновок
FTP дозволяє ефективно передавати великі обсяги даних, організовувати файлові архіви на віддалених серверах, створювати резервні копії або оновлювати вебсайти.
Його часто застосовують системні адміністратори, веброзробники та користувачі, яким потрібно керувати віддаленим сховищем. Перевагами є простота доступу, підтримка багатьох платформ та можливість автоматизації завантажень.








