Протокол FTP (File Transfer Protocol — протокол передачи файлов) предназначен для передачи файлов по сети.
FTP описывается RFC 959 и определен только для транспортного протокола TCP; UDP -реализации, в отличие от TFTP, нет. В RFC 2428 описаны расширенные режимы FTP, которые позволяют работать в сетях IPv6. В расширенных режимах вместо команд PORT и PASV используются EPRT и EPSV соответственно.
Характерной отличительной особенностью FTP от других протоколов является то, что он для своей работы задействует два порта – порт данных и порт управления. Порт управления используется для установления соединения между клиентом и сервером, для управления режимами работы и т. д. В то время как порт данных служит для передачи запрашиваемой информации. Протоколом определены два режима взаимодействия: активный и пассивный, понимание которых крайне важно в случае использования в сети брандмауэров.
Протокол не шифруется, при аутентификации передаются логин и пароль открытым текстом. Чтобы предотвратить перехват трафика, необходимо использовать протокол шифрования данных SSL, который поддерживается многими современными FTP-серверами и некоторыми FTP-клиентами.
220 FTP server ready. USER ftp //Анонимус 230 Login successful. PASV 227 Entering Passive Mode (192,168,254,253,233,92)//Клиент должен открыть соединение на переданный IP LIST 150 Here comes the directory listing. //Сервер передает список файлов в директории 226 Directory send OK. CWD incoming 250 Directory successfully changed. PASV 227 Entering Passive Mode (192,168,254,253,207,56) STOR gyuyfotry.avi 150 Ok to send data. //Клиент передает содержимое файла 226 File receive OK. QUIT 221 Goodbye.
Аргумент 192,168,254,253,207,56 означает, что соединение от сервера ожидается на узле с IP-адресом 192.168.254.253 на порту 207*256+56=53048.
Windows:
Linux:
NcFTP доступен для установки из репозиториев по умолчанию с помощью диспетчера пакетов, как показано ниже.
$ sudo apt install ncftp [On Debian/Ubuntu] $ sudo yum install ncftp [On CentOs/RHEL] $ sudo dnf install ncftp [On Fedora]
Пример использования NcFTP для переноса сайтов c виртуального хостинга на VPS. Копируется весь аккаунт рекурсивно (первая пример синтаксиса ncftpget):
ncftpget [flags] remote-host local-dir remote-path-names ncftpget -R -v -u LOGIN -p PASSWORD 10.10.0.83 ./ /*