Ftp. общие сведения
Содержание:
- Что такое FTP
- Запуск и работа с FileZilla
- Какие команды использует FTP протокол
- Клиент и сервер
- Что такое SFTP?
- Функции FTP
- Отличия от HTTP
- Типы FTP
- Поддержка веб-браузера
- Обязательно ли использовать 21 порт
- Установка FTP FileZilla Server
- Взаимодействие с транспортным уровнем
- Безопасность
- Проблемы межсетевых экранов
- Виды, устройство и способы экранирования витой пары
- Безопасный FTP
- Пример
- Работа FTPS-сервера
- Запустить FTP клиент
- В чем смысл вообще
- Подключение к серверу FTP
- Основные команды
Что такое FTP
Формально FTP подразумевает подключение к определенной папке, которая находится на сервере, посредством Интернет. Несмотря на внушительный возраст, этот протокол до сих пор используется для передачи файлов, доступа к удаленным хостам и распространения программного обеспечения.
В отличие от HTTP, FTP основан на сессиях работы, поддерживает аутентификацию пользователей и текстовый режим, позволяет выполнять операции над файловой системой. Его главная особенность заключается в том, что с ним возможно множественное (в частности, двоичное) подключение. Один из каналов является управляющим – через него поступают команды серверу и возвращаются ответы. Остальные используются непосредственно для передачи данных. При этом FTP позволяет сокращать расходы трафика и время, затраченное на пересылку больших файлов.
Запуск и работа с FileZilla
После установки программу нужно запустить. Мгновенно откроется окно, которое разделено на несколько разделов. Вверху, как обычно, находятся основные функции утилиты.
В окошках слева присутствуют локальные диски вашего компьютера. В окошках справа будут отображаться удаленные файлы, например, с сервера или хостинга. Конечно, сначала нужно зарегистрироваться на хостинге и получить данные для FTP-подключения. Обычно это адрес сервера, имя пользователя и пароль.
Чтобы подключиться быстро можно использовать поля раздела вверху программы. Там есть «Хост» — имя или адрес сервера, «Имя пользователя» — полученное от вашего хостера, «Пароль» — также полученный от хостера или измененный вами и «Порт» — обычно это 21.
Пример подключения к хостингу или серверу веб-сайта
После регистрации на портале хостинг-провайдера вам на почту присылают основные данные для входа на веб-ресурс и для подключения по FTP. Обычно это следующая информация:
- IP-адрес сервера – к примеру, такой 22.22.111.233;
- Имя пользователя – по умолчанию может стоять «root», если не меняли (но лучше поменять на что-то своё);
- Пароль – можно при желании изменить, но обязательно надо запомнить.
Заходим в FileZilla и переходим в меню «Файл», выбираем там пункт «Менеджер сайтов».
В открывшемся окне нажимаем кнопку «Новый сайт» и даём ему имя. Теперь в правой части окошка вбиваем следующую информацию:
- Хост – имя/адрес сервера;
- Порт – можно оставить пустым, либо прописать 21;
- Протокол – по умолчанию FTP, но если поддерживается SSH (SFTP), используем его;
- Тип входа – хостинг-провайдеры предлагают разные типы входа, но обычно это «Нормальный»;
- Пользователь – имя пользователя;
- Пароль – ввод пароля, предоставленный хостером.
Для подключения к веб-сайту нажимаем кнопку «Соединиться» и ждём.
Вверху окна утилиты можно видеть статус подключения, в результате которого должно произойти извлечение каталогов. Они появятся в правом разделе «Удаленный сайт».
Если вы решили создать сайт на виртуальном или физическом сервере, такой FTP-клиент, как FileZilla подойдет для этих целей очень хорошо. Подключиться можно к любому компьютеру, выступающему в качестве удаленного сервера.
Сам FTP протокол используется уже очень давно и способен передавать любые файлы и папки по TCP-сетям, используя 21 порт. Для использования нужно ввести данные, обычно логин, пароль и адрес хоста.
Какие команды использует FTP протокол
Скорее всего, вам они в работе не понадобятся, поскольку вы будете использовать юзер-агент в виде программы с удобным интерфейсом. Одна из таких программ – это FileZIlla. Но всякое бывает. Возможно, у вас под рукой будет только Far Maneger, где все необходимо делать через терминал. В таком случае вы должны познакомиться с основными командами для FTP.
Чтобы подключиться к серверу, вам придется воспользоваться командой USER. Она необходима, чтобы обозначить имя юзера, который хочет открыть сессию с сервером. После того, как вы введете идентификатор пользователя в команде USER, вам нужно прописать пароль для входа. Для этого используйте специальную команду – PASS.
Одна из самых популярных функций, при помощи которой вы сможете “путешествовать” по серверу – это CWD. Команда нужна для того, чтобы вы могли перемещаться между директориями сервера. Чтобы воспользоваться командой, введите CWD и путь каталога, в который вы хотите попасть.
Если в каком-то случае вам необходимо провести реинициализацию, то есть опустить все данные и настройки текущего соединения, то используйте команду REIN. Во время ее использования передача данных не прекращается, и параметры передачи остаются прежними, какими были до команды REIN. Либо можете сделать это еще более радикальным способом – закрыть управляющее соединение при помощи команды QUIT. Она также не прерывает передачу данных, и только после окончания загрузки сессия полностью прерывается.
Для того, чтобы прописать порт в активном режиме, то есть назначить его для пассивного участника, вам нужно воспользоваться командой PORT. Проблема в том, что эта команда очень сложная для написания – вам нужно будет указать 32 бита IP сервера и 16 бит номера порта, что совсем неудобно. Потому лучше найдите способ использовать упрощенный клиент для работы по FTP протоколу, чтобы сильно не нагружать себя. В подобном клиенте изменить номер порта – это плевое дело. Достаточно зайти в настройки, найти нужный пункт и вписать в него другую цифру вместо текущей.
Команды RETR и STOR вы будете использовать для того, чтобы передавать данные с сервера и на сервер. Первая команда нужна для того, чтобы отправить выделенный файл на устройство клиента, а вторая – на сервер. А чтобы переименовать файл, вам нужно использовать две последовательные команды. Сначала пропишите RNFR со старым именем файла, а затем RNTO, указав новое имя файла. Также вам понадобится команда DELE, которая нужна для удаления данных с файловой системы, точнее того файла, который выделен в текущий момент.
Для удаления каталогов используются другие команды. Чтобы удалить выделенный каталог, вам понадобится команда RMD. А чтобы создать новую папку, используйте строку MKD. Также пользователям часто нужна функция просмотра файлов, которые имеются в каталоге. Для этого используйте команду LIST, либо NLST.
Клиент и сервер
Для работы по FTP нужны двое: FTP-сервер и FTP-клиент. Что делает сервер:
- обеспечивает доступ по логину и паролю к нужным файлам;
- показывает пользователю только те файлы и папки, которые он может просматривать или загружать в них;
- следит за качеством передачи и смотрит, чтобы не было ошибок;
- управляет параметрами соединения в пассивном режиме.
Так как FTP пришёл к нам из времён UNIX-систем, то любое соединение требует логина и пароля. Если у пользователя его нет, сервер его не пропустит. Но чтобы сделать файлы доступными для всех, используют анонимный режим. В нём логином будет слово anonymous, а паролем — любой адрес электронной почты. Современные браузеры умеют сами заходить на анонимные FTP-серверы и подставлять почту. Со стороны это выглядит так, как будто никакого логина и пароля нет, но они есть.
Когда запускается FTP-сервер, ему говорят: «Уважаемый сервер, вот список файлов и папок, которые нужно показывать на сервере. Если к тебе постучится пользователь с таким-то логином и паролем, то покажи ему всё, а если с вот таким логином — то дай ему одну только эту папку. Анонимов не пускать». Ещё один обязательный параметр — адрес сервера и порт, по которому будет идти передача файлов.
Чтобы подключиться к серверу, нужна специальная программа, их ещё называют FTP-клиентами. Для каждой операционной системы есть много своих клиентов, например, FileZilla или CuteFTP. Те, кто работает в Linux-подобных системах, часто используют командную строку.
Интерфейс CuteFTP для MacOS.
Работа с FTP в командной строке.
Такая схема работы часто используется в виртуальных хостингах, когда нужно получить доступ к содержимому сайта или изменить конфигурационные файлы.
Что такое SFTP?
SFTP – это сетевой протокол, который похож на FTP. Он тоже позволяет получать доступ к файлам, передавать их и управлять ими, но через безопасный и надежный поток данных. В отличие от FTP, он не использует отдельные каналы передачи данных и команд. Вместо этого он передает файлы в специально отформатированных пакетах. Вы можете использовать SFTP теми же способами, что и FTP, но только с дополнительной защитой. Filezilla и Cyberduck также предлагают SFTP, в рамках своего бесплатного пакета.
Ключевое различие между SFTP и FTP
Наиболее очевидное их различие в том, что SFTP является защищенным сетевым протоколом, а FTP – нет. Другое отличие это то, что протокол FTP функционирует на основе TCP/IP, а SFTP – на основе SSH.
TCP/IP – это стандартный протокол, который управляет взаимодействием (связью) между всеми компьютерами в интернете. SFTP передает файлы с помощью протокола SSH между сервером и клиентом.
Некоторое время назад, для того, чтобы добавить немного безопасности FTP, Netscape создала SSL (в настоящее время TLS). Затем SSL был применен к FTP для создания FTPS.
Функции FTP
Для работы с протоколом используют стандартные UNIX-команды. С их полным перечнем можно ознакомиться, набрав в специальной строке «help» или «?». Наиболее часто используются следующие команды:
- open – устанавливает связь с FTP-сайтом. Применяется при обращении к разным серверам во время одного сеанса работы. Требует предварительного закрытия предыдущей FTP-площадки командой close;
- user – используется для повторного ввода имени и пароля пользователя для аутентификации. Функция необходима в тех случаях, когда удаленная машина допускает пользователей с определенными параметрами;
- bye или quit – используется параллельно с close, закрывает все связи и завершает выполнение программы;
- remotehelp – открывает справочную информацию по командам, которые поддерживает удаленный FTP-сервер.
При работе с функциями необходимо придерживаться следующих правил:
- использовать символ «/» для разделения каталогов;
- следить за употреблением строчных и прописных букв (важен регистр);
- использовать префиксы, которые начинаются с точки (опционально).
Команды и чаще всего вспомогательные программы для FTP-соединений позволяют загружать на сервер файлы с компьютера и в обратном направлении, а также менять права доступа к отдельным объектам.
Отличия от HTTP
HTTP по существу исправляет ошибки в FTP, из-за которых его было неудобно использовать для множества небольших эфемерных передач, типичных для веб-страниц.
FTP имеет управляющее соединение с отслеживанием состояния, которое поддерживает текущий рабочий каталог и другие флаги, и для каждой передачи требуется вторичное соединение, через которое передаются данные. В «пассивном» режиме это вторичное соединение от клиента к серверу, тогда как в «активном» режиме по умолчанию это соединение от сервера к клиенту. Эта очевидная смена ролей в активном режиме и случайные номера портов для всех передач — вот почему межсетевые экраны и шлюзы NAT так тяжело работают с FTP. HTTP не имеет состояния и мультиплексирует управление и данные через одно соединение от клиента к серверу на хорошо известных номерах портов, которые тривиально проходят через шлюзы NAT и просты для управления брандмауэрами.
Настройка управляющего соединения FTP происходит довольно медленно из-за задержек отправки всех необходимых команд и ожидания ответов в оба конца, поэтому обычно создается управляющее соединение и удерживается его открытым для передачи нескольких файлов, а не отбрасывается и повторно -Установить сеанс каждый раз заново. Напротив, HTTP изначально сбрасывал соединение после каждой передачи, потому что это было очень дешево. Хотя впоследствии HTTP получил возможность повторно использовать TCP-соединение для множественных передач, концептуальная модель все еще представляет собой независимые запросы, а не сеанс.
Когда FTP передает данные через соединение для передачи данных, контрольное соединение не используется. Если передача занимает слишком много времени, брандмауэр или NAT могут решить, что контрольное соединение не работает, и прекратить его отслеживание, фактически разорвав соединение и запутав загрузку. Одиночное HTTP-соединение простаивает только между запросами, и это нормально и ожидается, что такие соединения будут разорваны после тайм-аута.
Типы FTP
FTP Explorer
Это клиентское приложение, которое было разработано, чтобы выглядеть и чувствовать себя очень похожим на представление файловой системы проводника пользовательского интерфейса Windows.
FTP по почте
Это позволяет пользователям, не имеющим доступа к интернету, копировать файлы с помощью анонимного FTP, отправляя сообщения электронной почты и добавляя слово help в текст.
FTP-сервер
Это выделенный компьютер, предоставляющий FTP-сервис. Он приглашает хакеров и требует аппаратного или программного обеспечения безопасности, такого как использование имен пользователей, паролей и контроля доступа к файлам.
FTP Клиент
Это компьютерное приложение, которое обращается к серверу FTP. При этом пользователям необходимо блокировать входящее FTP соединение, которое пытается использовать пассивный режим, и проверять вирусы на наличие всех загружаемых файлов.
Поддержка веб-браузера
Большинство распространенных веб-браузеров могут получать файлы, размещенные на FTP-серверах, хотя они могут не поддерживать расширения протокола, такие как FTPS . Когда предоставляется URL-адрес FTP, а не HTTP , доступное содержимое на удаленном сервере представляется способом, аналогичным тому, который используется для другого веб-содержимого. Полнофункциональный FTP-клиент может быть запущен в Firefox в виде расширения под названием FireFTP .
С 2019 года основные браузеры, такие как Chrome и Firefox, в разной степени отказываются от поддержки FTP, и Google планирует полностью удалить ее в Chrome 82. В настоящее время Mozilla обсуждает предложения, в том числе удаление поддержки только старых реализаций FTP, которые больше не используются. чтобы упростить свой код.
Синтаксис
Синтаксис URL-адреса FTP описан в RFC и имеет форму: (части в квадратных скобках необязательны).
Например, URL-адрес ftp://public.ftp-servers.example.com/mydirectory/myfile.txt представляет файл myfile.txt из каталога mydirectory на сервере public.ftp-servers.example.com в качестве ресурса FTP. . URL-адрес ftp: // user001: secretpassword@private.ftp-servers.example.com/mydirectory/myfile.txt добавляет спецификацию имени пользователя и пароля, которые должны использоваться для доступа к этому ресурсу.
Более подробную информацию об указании имени пользователя и пароля можно найти в документации браузеров (например, Firefox и Internet Explorer ). По умолчанию большинство веб-браузеров используют пассивный режим (PASV), который легче преодолевает межсетевые экраны конечных пользователей.
Существуют некоторые вариации в том, как разные браузеры обрабатывают разрешение пути в случаях, когда для пользователя существует некорневой домашний каталог.
Обязательно ли использовать 21 порт
Люди, которые постоянно имеют дело с серверами и создают их, наслышаны о цифре 21. Для них она является знаковой, так как многие сервера и протоколы, не только FTP, используют 21 порт по умолчанию. И это плохо, если начать анализировать ситуацию. Ведь протокол передачи данных совсем не защищен от перехвата. В любой момент опытные хакеры могут напасть на ваш сервер и перехватить пароль и логин клиента. Затем они проникнут на сервер и украдут оттуда важные данные, либо спрячут в каталогах вредоносные программы и вирусы.
Чтобы хоть как-то повысить уровень безопасности использования протокола FTP, рекомендуется сменить в настройках стандартный порт, который нужен для подключения. Сделать это несложно, но у каждого сервера данная опция настраивается по-своему. Единственный нюанс заключается в том, что потом при подключении клиенту необходимо будет указывать новый номер порта вместо цифры 21. В этом и суть защиты – хакеры не будут знать порт, по которому нужно перехватывать данные, потому не сумеют их украсть.
Установка FTP FileZilla Server
После скачивания дистрибутива, собственно, запустите его установку (имеется ввиду, что надо кликнуть по скачанному exe-файлу) и следуйте рекомендациям ниже.
На первом окне нужно согласиться с лицензионным соглашением, нажмите “I Аgree”.
Далее надо выбрать тип установки. Всего их пять:
- Стандартный (Standart) — вариант для установки с нуля для полного функционирования сервера.
- Полный (Full) — почти тоже самое, но так же в папку установки будут скопированы исходный код программы, на случай, если вы что-то захотите в ней изменить.
- Только FTP сервис (Service only) — устанавливается непосредственно FTP сервис, без доступа к нему через интерфейс. Полезно, если вы планируете управлять своим файлохранилищем с другого компьютера.
- Интерфейс управления (Interface only) — в отличие от предыдущего пункта, ставится только графическая оболочка управления сервером, но не он сам. Используйте, если вы хотите удаленно получить доступ к своему FTP серверу.
- Выборочная установка (Custom) — Вы вольны выбирать, что хотите поставить на свой компьютер.
Для первой установки рекомендую выбрать стандартный вариант (Standart). Нажмите «Next».
На следующем окне необходимо выбрать папку установки, например, “C:\Program Files\FileZilla Server”. После выбора переходите к следующему окну (Next).
Теперь установщик попросит нас выбрать способ установки и запуска сервера.
Есть три варианта:
- Как службу и запускать при входе в систему
- Как службу и запускать вручную
- Простая установка, запускать вручную
Рекомендуется выбрать первый или второй вариант. Разница лишь в том, что во втором случае для работы сервера, Вам необходимо будет переходить в «Панель управления — Администрирование — Управление службами», находить там службу в списке и запускать её самостоятельно, надавив на кнопочку запуск.
Взаимодействие с транспортным уровнем
FTP использует протокол транспортного уровня TCP, а для управляющего соединения на сервере используется порт 21. Соединение для данных может быть установлено в двух режимах: в активном и пассивном, при этом используются разные номера портов.
В активном режиме FTP инициатором установки соединения для передачи данных является сервер. В этом случае используется порт 20 на сервере, а со стороны клиента порт больше 1024.
Однако, если между сервером и клиентом находится межсетевой экран или устройство трансляции сетевых адресов NAT, то сервер установить соединение с клиентом не сможет. В этом случае используется пассивный режим, при котором соединение для передачи данных устанавливает клиент. В пассивном режиме и на клиенте и на сервере используются порты с номерами больше, чем 1024.
Безопасность
FTP не был разработан как безопасный протокол и имеет множество слабых мест. В мае 1999 года авторы RFC перечислили уязвимость для следующих проблем:
- Атака грубой силой
- Атака с отказом FTP
- Захват пакетов
- Кража порта (угадывание следующего открытого порта и узурпация законного соединения)
- Атака спуфингом
- Перечисление имени пользователя
- DoS или DDoS
FTP не шифрует свой трафик; все передачи осуществляются в виде открытого текста, а имена пользователей, пароли, команды и данные могут быть прочитаны любым лицом, способным выполнять захват ( анализ ) пакетов в сети. Эта проблема характерна для многих спецификаций интернет-протокола (таких как SMTP , Telnet , POP и IMAP), которые были разработаны до создания механизмов шифрования, таких как TLS или SSL.
Общие решения этой проблемы включают:
- Использование безопасных версий незащищенных протоколов, например FTPS вместо FTP и TelnetS вместо Telnet.
- Использование другого, более безопасного протокола, который может обрабатывать задание, например протокола передачи файлов SSH или протокола безопасного копирования .
- Использование безопасного туннеля, например Secure Shell (SSH) или виртуальной частной сети (VPN).
FTP через SSH
FTP через SSH — это практика туннелирования обычного сеанса FTP через соединение Secure Shell. Поскольку FTP использует несколько TCP- соединений (что необычно для протокола TCP / IP, который все еще используется), туннелирование через SSH особенно сложно. Со многими клиентами SSH попытка настроить туннель для канала управления (начальное соединение клиент-сервер на порту 21) защитит только этот канал; когда данные передаются, программное обеспечение FTP на любом конце устанавливает новые TCP-соединения (каналы данных) и, таким образом, не имеет защиты конфиденциальности или целостности .
В противном случае клиентскому программному обеспечению SSH необходимо иметь специальные знания о протоколе FTP, чтобы отслеживать и переписывать сообщения канала управления FTP и автономно открывать новые пересылки пакетов для каналов данных FTP. Программные пакеты, поддерживающие этот режим, включают:
Tectia ConnectSecure (Win / Linux / Unix) пакета программного обеспечения SSH Communications Security
Проблемы межсетевых экранов
Как известно, протокол FTP использует для своей работы два соединения: одно — для передачи данных, другое для обмена командами. Множество межсетевых экранов спроектированы так, чтобы определять порт, по которому ведется передача данных и обеспечивать его работу. Однако, если контрольное соединение зашифровано с использованием TLS или SSL, сведения о номере порта соединения для передачи данных оказываются зашифрованными, и межсетевой экран не в состоянии их расшифровать. В этом случае передача данных и работа по протоколу FTPS оказывается либо полностью невозможной, либо ограничивается пассивным режимом. Эту проблему можно решить следующим образом: задать ограниченный диапазон портов для передачи данных и настроить межсетевой экран так, чтобы эти порты оставались открытыми.
Виды, устройство и способы экранирования витой пары
Разобравшись, что такое витая пара, перейдем к изучению ее видов и устройства.
Виды кабеля по числу медных жил:
- Одножильный (монолитный) – каждый провод состоит из одной цельной проволоки, толщиной 0,3-0,6 мм или 20-26 AWG. Такие кабеля легко ломаются, поэтому пригодны только для прокладки внутри стенных панелей и монтажных коробов.
- Многожильный – провода состоят из пучков тончайших жил. Такой кабель не ломается при сгибании и скручивании, и используется для подвижных соединений между устройствами. Имеет более высокий уровень затухания сигнала, чем одножильный, поэтому его максимальная длина не должна превышать 100 м.
Многожильная витая пара
По способу экранирования – наличия защиты от э/м наводок:
- UTP (U/UTP) – витая пара неэкранированная (без защиты).
- FTP (F/UTP) – витая пара фольгированная – имеет одну общую оболочку из фольги.
- STP (S/UTP) – витая пара экранированная – один общий экран в виде металлической оплетки.
- S/FTP (SF/UTP) – фольгированный кабель с добавочным экраном из оплетки.
- U/FTP – кабель с индивидуальным экранированием каждой скрутки оболочкой из фольги.
- S/FTP – отдельное экранирование каждой скрутки плюс металлическая оплетка.
- F/FTP – отдельное экранирование каждой скрутки плюс общий для всех жил экран из фольги
- SF/FTP – отдельное экранирование каждой скрутки плюс общий экран из оплетки и фольги.
Витая пара SF/FTP
Чтобы было понятнее, приведем расшифровку буквенного кода экранирования:
- U – экрана нет;
- F – фольга;
- S – оплетка.
По цветам оболочки и области применения:
внешняя витая пара со стальным тросом
Внутренняя витая пара
Витая пара для пожароопасных зон
По форме поперечного среза:
- Круглый – универсальный;
- Плоский – для монтажа под обоями или ковролином, такие кабеля более подвержены помехам, чем круглые.
Безопасный FTP
Существует несколько методов безопасной передачи файлов, которые иногда называются «Безопасным FTP».
SFTP
Основная статья: SFTP
SFTP, или «SSH File Transfer Protocol», не связан с FTP, за исключением того, что он тоже передаёт файлы и имеет аналогичный набор команд для пользователей. SFTP, или безопасный FTP, — это программа, использующая SSH (Secure Shell) для передачи файлов. В отличие от стандартного FTP он шифрует и команды, и данные, предохраняя пароли и конфиденциальную информацию от открытой передачи через сеть. По функциональности SFTP похож на FTP, но так как он использует другой протокол, клиенты стандартного FTP не могут связаться с SFTP-сервером и наоборот.
FTP через SSH (не SFTP)
FTP через SSH (не SFTP) относится к практике туннелирования обычной FTP-сессии через SSH-соединение. Поскольку FTP использует несколько TCP-соединений, туннелирование через SSH особенно затруднительно. Когда много SSH-клиентов пытаются установить туннель для канала управления (изначальное «клиент-сервер» соединение по порту 21), защищён будет только этот канал; при передаче данных программное обеспечение FTP на любом конце установит новые TCP-соединения (каналы данных), которые обойдут SSH-соединение и, таким образом, лишатся целостной защиты.
Иначе, для клиентского программного обеспечения SSH необходимо иметь определённые знания о FTP для отслеживания и перезаписи сообщений потока управления FTP и автономного открытия новых перенаправлений для потока данных FTP. Программные пакеты, поддерживающие этот режим:
FTP через SSH иногда относят к безопасным FTP; но не стоит путать его с другими методами, такими как SSL/TLS (FTPS). Другие методы передачи файлов с помощью SSH и не связанные с FTP — SFTP и SCP; в каждом из них и учётные и файловые данные всегда защищены протоколом SSH.
Пример
В примере жирным шрифтом выделены команды, которые подаёт клиент; обычным шрифтом — сообщения сервера. Примечания отделены двумя слэшами:
220 FTP server ready.
220 Hello World! USER anonymous 331 Anonymous login ok, send your complete email address as your password PASS ************ 230 Logged in anonymously. 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 example.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 << 8 + 56 = 53048 (где << — операция побитового сдвига, 207 записывается в младший разряд, а потом сдвигается в старший, чтобы в младший записать 56 или 207*256+56=53048).
На многих FTP-серверах существует каталог (под названием incoming, upload и т. п.), открытый на запись и предназначенный для закачки файлов на сервер. Это позволяет пользователям наполнять сервера свежими данными.
Работа FTPS-сервера
Обычно подключение по FTPS осуществляется посредством специальных программ, в частности, WinSCP, Far, Total Comander, FileZilla и пр. Строка подключения выглядит так:
Протокол:// Имя@Хост : пароль @ хост . ru : 21.
Каждая программа, обеспечивающая соединение, предлагает заполнять актуальные поля по-своему. Но для любого подключения необходимо знать:
- имя подключения (логин, ник);
- пароль для подключения;
- имя хоста FTP/FTPS;
- номер порта.
Возможны и анонимные подключения по FTP/FTPS, но особого практического значения они не имеют.
Клиент FTPS может установить соединение с сервером в явном или неявном режимах.
В первом случае сначала устанавливается обычное соединение FTP. Для отправки конфиденциальной информации, такой как пароли, клиент отправляет запрос на переключение на защищенное соединение FTP. После успешного согласования (SSL) между сторонами соединения (сервер, клиент) устанавливается защищенный командный канал.
А во втором случае клиент и сервер начинают обмен данными в защищенном режиме. Текстовая информация при этом передается в зашифрованном формате.
Запустить FTP клиент
Запустите FileZilla и установите соединение с вашим сайтом.
Для этого откройте «Менеджер сайтов» (нажмите CTRL + S).
Создайте новый сайт и пропишите данные авторизации как на скриншоте.
При отсутствии у вас логина и пароля обратитесь к хостеру, он пришлет вам их еще раз.
Аккуратно скопируйте по очереди и логин и пароль.
Выберите тип входа «Нормальный» — в этом случае пароли сохранятся в программе и их не потребуется вводить каждый раз при подключении к сайту.
Далее вставляйте скопированные логин и пароль в соответствующие поля. Если логин и пароль корректны, и вы нигде ничего не напутали, то соединение успешно установится, и вы увидите примерно такое окно.
В левом окне вы увидите файлы вашего компьютера, за которым вы сейчас работаете.
Это может быть дистрибутив WordPress (как в примере) или любые другие папки.
В правом окне располагаются файлы из так называемого «удаленного компьютера», попросту из вашего сайта.
Там могут быть какие-то файлы или может не быть ничего, если вы подключаетесь к пустым сайтам и папкам.
В чем смысл вообще
Ну и казалось бы — что мешает передавать файлы, как обычно, через сайты по протоколу HTTP? Полно же сайтов и форумов, на которых лежат файлы, и их можно спокойно скачать.
А разница вот в чем:
- Для FTP не нужен сайт, то есть веб-интерфейс. Не нужно запускать веб-сервер, настраивать шаблоны вывода списка файлов и поднимать отдельную программу, которая будет нам отдавать эти файлы (типа Вордпресса). FTP — это как доступ к удаленной папке: ты сразу видишь файлы и можешь их качать, без посредников. А в вебе нужна какая-то программа, которая «нарисует» тебе файловую систему и поставит ссылки на файлы.
- В FTP уже реализованы вопросы авторизации и прав. А в вебе их нужно создавать: например, ставить тот же Вордпресс и к нему прикручивать плагины с системой доступа. Или настраивать Apache, генерировать ключи доступа, раскладывать конфигурационные файлы по папкам — это гораздо менее элегантно, чем настройка FTP.
- В FTP можно разрешить или запретить отдельным пользователям загружать файлы на FTP-сервер. В вебе загрузка файлов от пользователя на сервер — это на порядок более сложная задача.
Подключение к серверу FTP
Но среди них не только FTP, так что убедитесь в том, что подключаетесь к нужному протоколу, иначе возникнет ошибка подключения. Для нашего обучения, мы используем ftp.cse.buffalo.edu. В официальной документации Python используется ftp.debian.org, так что вы спокойно можете использовать и его. Давайте попробуем подключиться к серверу прямо сейчас. Откройте интерпретатор Python в вашем терминале, или используйте IDLE, совместно со следующим кодом:
Python
from ftplib import FTP
ftp = FTP(‘ftp.cse.buffalo.edu’)
print(ftp.login())
1 |
fromftplibimportFTP ftp=FTP(‘ftp.cse.buffalo.edu’) print(ftp.login()) |
Результат:
Python
230 Guest login ok, access restrictions apply.
1 | 230Guest login ok,access restrictions apply. |
Давайте немного притормозим. Здесь мы импортировали класс FTP из модуля ftplib. Далее, мы создали экземпляр класса, передав ему хост, к котором у мы хотим подключиться. Так как мы не передаем имя пользователя или пароль, Python предположит, что мы решили подключиться анонимно. Если так вышло, что вам нужно подключиться к серверу FTP используя нестандартный порт, тогда вам нужно использовать метод connect. Вот так:
Python
from ftplib import FTP
ftp = FTP()
HOST = ‘ftp.cse.buffalo.edu’
PORT = 12345
ftp.connect(HOST, PORT)
1 |
fromftplibimportFTP ftp=FTP() HOST=’ftp.cse.buffalo.edu’ PORT=12345 ftp.connect(HOST,PORT) |
Данный код не сработает, так как сервер FTP в данном примере не содержит открытый для нас порт 12345. Однако, суть в том, чтобы указывать, как подключиться к порту, который отключается от порта по умолчанию. Если сервер FTP, к которому вы подключаетесь, требует защиту TLS, то вам потребуется импортировать класс FTP_TLS вместо класса FTP. Класс FTP_TLS поддерживает keyfile и certfile. Если вы хотите защитить свое подключение, тогда вам нужно вызвать prot_p для этой цели.
Основные команды
- ABOR — Прервать передачу файла
- CDUP — Сменить каталог на вышестоящий.
- CWD — Сменить каталог.
- DELE — Удалить файл (DELE filename).
- EPSV — Войти в расширенный пассивный режим. Применяется вместо PASV.
- HELP — Выводит список команд, принимаемых сервером.
- LIST — Возвращает список файлов каталога. Список передаётся через соединение данных.
- MDTM — Возвращает время модификации файла.
- MKD — Создать каталог.
- NLST — Возвращает список файлов каталога в более кратком формате, чем LIST. Список передаётся через соединение данных.
- NOOP — Пустая операция.
- PASS — Пароль.
- PASV — Войти в пассивный режим. Сервер вернёт адрес и порт, к которому нужно подключиться, чтобы забрать данные. Передача начнётся при введении следующих команд: RETR, LIST и т. д.
- PORT — Войти в активный режим. Например PORT 12,34,45,56,78,89. В отличие от пассивного режима для передачи данных сервер сам подключается к клиенту.
- PWD — Возвращает текущий каталог.
- QUIT — Отключиться.
- REIN — Реинициализировать подключение.
- RETR — Скачать файл. Перед RETR должна быть команда PASV или PORT.
- RMD — Удалить каталог.
- RNFR и RNTO — Переименовать файл. RNFR — что переименовывать, RNTO — во что.
- SIZE — Возвращает размер файла.
- STOR — Закачать файл. Перед STOR должна быть команда PASV или PORT.
- SYST — Возвращает тип системы (UNIX, WIN, …).
- TYPE — Установить тип передачи файла (бинарный, текстовый).
- USER — Имя пользователя для входа на сервер.