Протокол передачі файлів, хоча і є технологією з минулого, залишається актуальним. FTP, попри відсутність сучасних стандартів безпеки, все ще використовується. Розглянемо, як саме.
Застереження: Уникайте використання FTP через Інтернет
Важливо відразу наголосити: FTP (File Transfer Protocol) виник у 1970-х роках, коли питання безпеки не були пріоритетними. Цей протокол не використовує шифрування. Дані для аутентифікації (логін, пароль), а також самі файли передаються у відкритому вигляді, що робить їх вразливими до перехоплення. Проте, FTP ще має своє застосування.
Якщо ви передаєте файли в межах вашої локальної мережі, то ризик менший, але все одно потрібно бути обережним. Якщо ж ваші файли не є конфіденційними, то використання FTP в локальній мережі є прийнятним. В Linux є стандартна утиліта командного рядка ftp, яка підходить для таких сценаріїв.
Категорично не рекомендується використовувати команду `ftp` для доступу до ресурсів у Інтернеті. Для цього є утиліта `sftp`, яка використовує безпечний протокол передачі файлів SSH. У цій статті ми розглянемо обидва варіанти.
На знімку екрана нижче показано, як пароль FTP передається у відкритому вигляді. Будь-хто, хто перехоплює трафік, може легко побачити пароль “MySecretPassword”.
Без шифрування зловмисники можуть не тільки переглядати, а й змінювати файли під час передачі.
Команда ftp
Якщо у вас є дійсний обліковий запис на FTP-сервері, ви можете підключитися до нього за допомогою наступної команди. Замініть IP-адресу в прикладах на адресу вашого FTP-сервера.
ftp 192.168.4.25
Застереження: Використовуйте `ftp` лише для підключення до серверів у довіреній локальній мережі. Для передачі файлів через Інтернет використовуйте команду `sftp`, описану нижче.
FTP-сервер привітає вас повідомленням, яке може відрізнятися. Після цього він запитає ім’я користувача для входу.
Зверніть увагу, що спочатку відображається IP-адреса сервера, до якого ви підключаєтеся, а потім ваше ім’я користувача Linux. Якщо ім’я облікового запису на FTP-сервері збігається з вашим ім’ям користувача Linux, просто натисніть Enter. Якщо вони відрізняються, введіть ім’я користувача для FTP і натисніть Enter.
Вхід на FTP-сервер
Далі вам потрібно буде ввести пароль від вашого FTP-сайту. Пароль не відображається на екрані. Якщо ім’я користувача і пароль підтвердяться, ви успішно зайдете на FTP-сервер.
Ви побачите підказку `ftp>`.
Огляд та завантаження файлів
Спершу, ймовірно, вам потрібно буде переглянути список файлів на сервері. Команда `ls` виконує цю функцію. Припустимо, що файл `gc.c` є на сервері, і ви хочете завантажити його на свій комп’ютер (локальний комп’ютер, як це називають в термінології FTP).
Команда для завантаження файлу — `get`. Введіть `get`, пробіл і назву файлу. Наприклад, `get gc.c`.
FTP-сервер передасть файл на локальний комп’ютер і покаже підтвердження. Ви також побачите розмір файлу та час передачі.
ls
get gc.c
Щоб завантажити кілька файлів одночасно, використовуйте команду `mget` (множинне завантаження). Вам доведеться підтверджувати завантаження кожного файлу окремо (y/n).
Для великої кількості файлів це непрактично. Тому пов’язані файли на FTP-сайтах зазвичай зберігають у вигляді архівів `tar.gz` або `tar.bz2`.
mget *.c
Завантаження файлів на FTP-сервер
Якщо ваш обліковий запис має відповідні дозволи, ви можете завантажувати файли на сервер за допомогою команди `put`. Наприклад, команда `put Songs.tar.gz` завантажить файл `Songs.tar.gz` на FTP-сервер.
put Songs.tar.gz
Аналогічно, є команда `mput` для завантаження кількох файлів одночасно. Потрібно буде підтверджувати завантаження кожного файлу (y/n).
Як і у випадку із завантаженням, рекомендується розміщувати на FTP-сервері архіви `tar`. Наприклад, завантаження файлів `.odt` виглядатиме так:
mput *.odt
Створення та зміна каталогів
Якщо ваш обліковий запис дозволяє, ви можете створювати каталоги за допомогою команди `mkdir`. Пам’ятайте, що каталоги створюються на FTP-сервері, а не на вашому комп’ютері.
Для навігації між каталогами на FTP-сервері використовуйте команду `cd`. Після використання `cd` підказка `ftp>` не зміниться. Щоб дізнатися, в якому каталозі ви знаходитесь, використовуйте команду `pwd` (print working directory).
Припустимо, ви створюєте каталог `music`, переходите в нього, перевіряєте місцезнаходження, і завантажуєте файл у цей каталог:
mkdir music
cd music
pwd
put songs.tar.gz
Для швидкого переходу до батьківського каталогу використовуйте `cdup`.
cdup
Доступ до локального комп’ютера
Для переходу між каталогами на локальному комп’ютері використовуйте команду `lcd` в підказці `ftp>`. Однак, це може бути незручно. Зручніше використовувати команду `!`, яка відкриває вікно оболонки на локальному комп’ютері. Після завершення роботи в оболонці, наберіть `exit`, щоб повернутися до `ftp>`.
Приклад використання `!` для перегляду файлів локального каталогу:
!
ls
exit
Перейменування файлів
Для перейменування файлів на FTP-сервері використовуйте команду `rename`. Наприклад, `rename songs.tar.gz rock_songs.tar.gz` перейменує файл `songs.tar.gz` на `rock_songs.tar.gz`. Після цього за допомогою `ls` можна перевірити результат.
rename songs.tar.gz rock_songs.tar.gz
ls
Видалення файлів
Для видалення файлів на FTP-сервері використовуйте команду `delete`. Для видалення кількох файлів одночасно використовуйте `mdelete`. Підтвердження (y/n) буде потрібне для кожного файлу.
Приклад видалення одного файлу (`gc.o`) та потім всіх файлів з розширенням `.o`:
ls
delete gc.o
mdelete *.o
Використання команди sftp
Як ми вже наголошували, команду `ftp` слід використовувати лише в локальних мережах. Адреса 192.168.*.* є внутрішньою адресою. Якщо ви хочете підключитися до віддаленого FTP-сервера, використовуйте команду `sftp`.
Приклад підключення до SFTP-сервера з ім’ям користувача `demo` на адресу `test.trebex.net`:
Після підключення ви можете побачити повідомлення про те, що автентичність хоста не може бути підтверджена. Це нормально для першого підключення. Натисніть `y`, щоб прийняти підключення.
Якщо ім’я користувача передано в командному рядку, то його не потрібно вводити окремо. Система запитає тільки пароль. Після введення і перевірки ви побачите підказку `sftp>`.
sftp [email protected]
Команди, які ми розглянули для `ftp`, працюють так само і в сеансі `sftp` з наступними відмінностями:
- Видалення файлу: `rm` (замість `delete`).
- Видалення кількох файлів: `rm` (замість `mdelete`).
- Перехід до батьківського каталогу: `cd ..` (замість `cdup`).
Приклад використання `ls`, `cd` та `pwd` в сеансі `sftp`:
В Linux є й інші варіанти для передачі файлів, наприклад, `scp` (захищена копія), але тут ми зосередилися на `ftp` та `sftp`. Використовуйте ці дві команди правильно, і ваші потреби у зберіганні та передачі файлів будуть задоволені.