Windows ftp в пассивном режиме

The quote PASV command is not a command to the ftp.exe program, it is a command to the FTP server requesting a high order port for data transfer. A passive transfer is one in which the FTP data over these high order ports while control is maintained in the lower ports.

The windows ftp.exe program can be used to send the FTP server commands to make a passive data transfer between two FTP servers. A standard windows installation will not, and probably should not, have FTP server service running as an endpoint for passive transfers. So if passive transfers are needed with a standard windows box, a solution other than ftp.exe is necessary as FTPing to localhost as one of the connections won’t work in most windows environments.

You can effect a passive FTP transfer between two different hosts (but not two connections on the same host) as follows:

Open up two prompts, use one to ftp.exe connect to your source FTP server and one to ftp.exe connect to your destination FTP server.

Now establish a passive connection between the servers using the raw commands PASV and PORT. The quote PASV command will respond with an IP/port in ellipsis. Use that data for the quote PORT <data> command. Your passive link is now established assuming that firewalls haven’t blocked one or more of the four ports (2 for FTP control, 2 for FTP data)

Next start receive of data with the quote STOR <filename> command to the receiving FTP server then send the control command quote RETR <filename> to the source FTP server.

so for me:

client 1
> ftp.exe server1
ftp> quote PASV
227 Entering Passive Mode (10,0,3,1,54,161)

client 2 
> ftp.exe server2
ftp> quote PORT 10,0,3,1,54,54,161
ftp> quote STOR myFile

client 1
ftp> quote RETR myFile

Cavet: I’m connecting to some old FTP servers YMMV

Passive FTP is a mode in File Transfer Protocol (FTP) that enables the client to request a data connection from the server, instead of the server initiating the data connection to the client. This mode is useful in situations where the client is behind a firewall or network address translation (NAT) device, as the firewall rules can be configured to allow incoming connections only from the server and not from clients. To use passive FTP in Windows command prompt, there are a few methods that can be followed.

Method 1: Use the ftp client’s built-in passive mode option

To use passive FTP mode in Windows command prompt using the ftp client’s built-in passive mode option, follow these steps:

  1. Open the Windows command prompt by pressing the Windows key + R, typing «cmd» and pressing Enter.
  2. Type «ftp» followed by the name or IP address of the FTP server you want to connect to, e.g. «ftp ftp.example.com».
  3. Enter your username and password when prompted.
  4. Type «passive» to switch to passive mode.
  5. Use the «ls» command to list the files on the FTP server, or «get» to download a file, e.g. «get file.txt».
  6. When you’re finished, type «bye» to disconnect from the FTP server.

Here’s an example of how to connect to an FTP server in passive mode using the Windows command prompt:

ftp ftp.example.com
Username: yourusername
Password: yourpassword
passive
ls
get file.txt
bye

In this example, we connect to an FTP server at «ftp.example.com» using the username «yourusername» and password «yourpassword». We then switch to passive mode using the «passive» command, list the files on the server using «ls», download a file called «file.txt» using «get», and finally disconnect from the server using «bye».

Method 2: Specify the passive mode in the ftp command line

To use passive FTP mode in Windows command prompt with «Specify the passive mode in the ftp command line», follow these steps:

  1. Open the command prompt by pressing the Windows key + R and typing «cmd».
  2. Type «ftp» and press enter to open the FTP client.
  3. Type «open» followed by the name or IP address of the FTP server you want to connect to. For example, «open ftp.example.com».
  4. Type your username and password when prompted to do so.
  5. Type «quote pasv» to enable passive mode.
  6. Type «ls» to list the files on the server. You should now be able to transfer files in passive mode.

Here is an example of the code:

ftp
open ftp.example.com
myusername
mypassword
quote pasv
ls

The «quote pasv» command sends a command directly to the FTP server to enable passive mode. This is necessary because the Windows command prompt FTP client doesn’t have a built-in option to enable passive mode.

Note that some FTP servers may require additional configuration to work properly in passive mode. If you have trouble connecting or transferring files, you may need to consult the documentation for your FTP server or contact the server administrator for assistance.

Method 3: Use a third-party FTP client that supports passive mode

To use passive FTP mode in Windows command prompt, you can use a third-party FTP client that supports passive mode. One such client is FileZilla, which is a free and open-source FTP client.

Here are the steps to use passive FTP mode in Windows command prompt using FileZilla:

  1. Download and install FileZilla from the official website.

  2. Open FileZilla and navigate to the «File» menu.

  3. Click on «Site Manager» to open the Site Manager window.

  4. Click on the «New Site» button to create a new site.

  5. Enter the FTP server details, including the hostname, port number, and login credentials.

  6. Under the «Transfer Settings» tab, select «Passive» as the transfer mode.

  7. Click on «Connect» to connect to the FTP server.

  8. Once connected, you can use the command prompt to navigate and transfer files using the FTP client.

Here is an example of how to navigate to a directory using the command prompt:

ftp> cd /example_directory

And here is an example of how to transfer a file using the command prompt:

ftp> put example_file.txt

In these examples, «cd» is the command to change directory, and «put» is the command to transfer a file to the FTP server.

Overall, using a third-party FTP client that supports passive mode is a simple and effective way to use passive FTP mode in Windows command prompt.

Many people just have this wrong notion that windows command line FTP.exe can not be run in passive mode. It actually can be configured to run. The (undocumented or not well documented in ftp help) QUOTE command is the key here. QUOTE PASV command will set the FTP client to work in passive mode. Below is an example:

ftp>open
userid:
password:
ftp>quote pasv
ftp>binary
ftp>put
ftp>quit

To run a sequence of FTP command from a file you may use Batch command or VBScript. First create your ftp command file (say ftp.txt) in note pad. The content of the file would be as below. Replace the fields with in [] with appropriate values:

open [siteaddress.com]
[userid]
[password]
quote pasv
binary
put
quit

Simply write the following in a batch file (say ftp.bat) to execute the ftp.txt content:

c:\windows\system32\ftp.exe -s:c:\ftp.txt

If you want to use VBScript, create a VBScript file (say ftp.vbs) in notepad as well. The content of the script file would be as below:

Set objShell = CreateObject("WScript.Shell")
objShell.Run "c:\windows\system32\ftp.exe -s:c:\ftp.txt", , True
Set objShell = Nothing

Double click on ftp.vbs and voila!

Содержание

  1. Вступление
  2. Основы
  3. Активный FTP
  4. Пример активного FTP
  5. Пассивный FTP
  6. Пример пассивного FTP
  7. Резюме

Вступление

Один из наиболее часто встречающихся вопросов при работе с брандмауэрами и другими проблемами подключения к Интернету – это различие между активным и пассивным FTP (протокол передачи файлов) и как лучше всего поддерживать один или оба из них.

Надеемся, что следующая статья поможет разобраться в путанице, связанной с поддержкой FTP в среде с межсетевым экраном.

Этот пост содержит примеры как активных, так и пассивных сеансов FTP из командной строки.

Эти примеры сессий должны помочь немного прояснить ситуацию.

Они также дают хорошую картину того, что происходит за кулисами во время сеанса FTP. Теперь перейдем к информации по теме…

Основы

FTP является исключительно службой на основе TCP.

Для FTP нет компонента UDP.

FTP является необычной службой, в которой используются два порта: порт данных и порт команды (также известный как порт управления).

Традиционно это порт 21 для командного порта и порт 20 для порта данных.

Однако возникает путаница, когда мы обнаруживаем, что в зависимости от режима порт данных не всегда находится на порте 20.

Активный FTP

В активном режиме FTP клиент подключается от случайного непривилегированного порта (N> 1024) к командному порту FTP-сервера, а именно 21.

Затем клиент начинает прослушивать порт N + 1 и отправляет команду FTP PORT N + 1 на FTP. сервер.

Затем сервер подключится к указанному клиенту порту данных через локальный порт данных, который является портом 20.

С точки зрения серверного брандмауэра, для поддержки активного режима FTP необходимо открыть следующие каналы связи:

  • Порт FTP-сервера 21 отовсюду (Клиент инициирует соединение)
    Порт 21 сервера FTP для портов> 1024 (сервер отвечает на порт управления клиента)
  • Порт 20 сервера FTP для портов> 1024 (сервер инициирует подключение данных к порту данных клиента)
  • Порт 20 сервера FTP от портов> 1024 (Клиент отправляет ACK на порт данных сервера)

При продолжительном соединение все выглядит следующим образом:

  • С клиентского порта 1026 (Cmd) на серверный порт 21 (Cmd)
  • С порта сервера 21 (Cmd) на порт клиента 1026 (Cmd)
  • С порта сервера 20 (данные) на порт клиента 1027 (данные)
  • С клиентского порта 1027 (данные) на серверный порт 20 (данные)

На шаге 1 командный порт клиента связывается с командным портом сервера и отправляет команду PORT 1027.

Затем сервер отправляет ACK обратно на командный порт клиента на шаге 2.

На шаге 3 сервер инициирует подключение через свой локальный порт данных к порту данных клиент указал ранее.

Наконец, клиент отправляет ACK обратно, как показано на шаге 4.

Основная проблема с активным режимом FTP на самом деле ложится на клиентскую сторону.

FTP-клиент не устанавливает фактическое соединение с портом данных сервера – он просто сообщает серверу, какой порт он прослушивает, и сервер снова подключается к указанному порту на клиенте.

Со стороны брандмауэра на стороне клиента это внешняя система, инициирующая соединение с внутренним клиентом, что обычно блокируется.

Пример активного FTP

Ниже приведен пример активного сеанса FTP.

Изменены только имена серверов, IP-адреса и имена пользователей.

В этом примере сеанс FTP инициируется от user01 (192.0.0.1), блока Solaris, на котором работает стандартный клиент командной строки FTP, к dest_serv (192.0.0.2), блока Solaris, на котором запущен solaris [TM] 9 ftpd.

Флаг отладки (-d) используется с клиентом FTP, чтобы показать, что происходит за кулисами.

Все, что выделено курсивом, является результатом отладки, который показывает фактические команды FTP, отправляемые на сервер, и ответы, генерируемые этими командами.

Есть несколько интересных вещей, чтобы рассмотреть об этом диалоге.

Обратите внимание, что при вводе команды PORT указывается порт в клиентской (192.0.0.1) системе, а не на сервере.

Мы увидим противоположное поведение, когда будем использовать пассивный FTP.

Пока мы находимся на этой теме, быстрое примечание о формате команды PORT.

Как видно из приведенного ниже примера, он отформатирован как последовательность из шести чисел, разделенных запятыми.

Первые четыре октета являются IP-адресом, а вторые два октета составляют порт, который будет использоваться для подключения к данным.

Чтобы найти действительный порт, умножьте пятый октет на 256, а затем добавьте шестой октет к сумме.

Таким образом, в приведенном ниже примере номер порта ((256 * 188) + 231) или 48359.

Быстрая проверка с помощью netstat должна подтвердить эту информацию.

$ ftp -d dest_serv
Connected to dest_serv.
220 dest_serv FTP server ready.
Name (dest_serv:boqueron): root
---> USER root
331 Password required for root.
Password:
---> PASS XXXX
230 User root logged in.
---> SYST
215 UNIX Type: L8 Version: SUNOS
Remote system type is UNIX.
---> TYPE I
200 Type set to I.
Using binary mode to transfer files.
ftp> ls
---> PORT 192,0,0,1,188,231
200 PORT command successful.
---> TYPE A
200 Type set to A.
---> NLST
150 Opening ASCII mode data connection for file list.
TT_DB
bin
(...)
var
vol
xfn
226 Transfer complete.
191 bytes received in 0.03 seconds (6.16 Kbytes/s)
---> TYPE I
200 Type set to I.
ftp> quit
---> QUIT
221-You have transferred 0 bytes in 0 files.
221-Total traffic for this session was 599 bytes in 1 transfers.
221-Thank you for using the FTP service on dest_serv.
221 Goodbye.
# netstat -a | grep 48359
dest_serv.ftp-data       user01.48359 33580      0 49640      0 TIME_WAIT

Пассивный FTP

Чтобы решить проблему с сервером, инициирующим соединение с клиентом, был разработан другой метод для FTP-соединений.

Он известен как пассивный режим, или PASV, после команды, использованной клиентом, чтобы сообщить серверу, что он находится в пассивном режиме.

В пассивном режиме FTP клиент инициирует оба подключения к серверу, решая проблему межсетевых экранов, фильтрующих входящее соединение порта данных с клиентом с сервера.

При открытии FTP-соединения клиент открывает два случайных непривилегированных порта локально (N> 1024 и N + 1).

Первый порт связывается с сервером через порт 21, но вместо того, чтобы затем выполнять команду PORT и разрешить серверу подключиться к своему порту данных, клиент выдаст команду PASV.

В результате сервер открывает случайный непривилегированный порт (P> 1024) и отправляет команду PORT P обратно клиенту.

Затем клиент инициирует соединение от порта N + 1 к порту P на сервере для передачи данных.

С точки зрения брандмауэра на стороне сервера, для поддержки FTP в пассивном режиме необходимо открыть следующие каналы связи:

  • Порт FTP-сервера 21 отовсюду (Клиент инициирует соединение)
  • Порт 21 сервера FTP для портов> 1024 (сервер отвечает на порт управления клиента)
  • Порты FTP-сервера> 1024 отовсюду (Клиент инициирует подключение данных к произвольному порту, указанному сервером)
  • Порты FTP-сервера> 1024 для удаленных портов> 1024 (Сервер отправляет ACK (и данные) на порт данных клиента)

При подключении FTP-соединение в пассивном режиме выглядит следующим образом:

  • С клиентского порта 1026 (Cmd) на серверный порт 21 (Cmd)
  • С порта сервера 21 (Cmd) на порт клиента 1026 (Cmd)
  • С клиентского порта 1027 (данные) на серверный порт 2024
  • С порта сервера 2024 (Cmd) на порт клиента 1027 (данные)

На шаге 1 клиент связывается с сервером через командный порт и выдает команду PASV.

Затем сервер отвечает на шаге 2 с помощью PORT 2024, сообщая клиенту, какой порт он прослушивает для подключения к данным.

На шаге 3 клиент затем инициирует соединение для передачи данных со своего порта данных на указанный порт данных сервера.

Наконец, сервер отправляет ACK на шаге 4 в порт данных клиента.

Хотя пассивный режим FTP решает многие проблемы на стороне клиента, он открывает целый ряд проблем на стороне сервера.

Самой большой проблемой является необходимость разрешить любое удаленное подключение к портам с высоким номером на сервере.

К счастью, многие FTP-демоны, включая демон Solaris in.ftpd, позволяют администратору указывать диапазон портов, которые будет использовать FTP-сервер. См. Приложение 1 для получения дополнительной информации.

Вторая проблема связана с поддержкой и устранением неполадок клиентов, которые поддерживают (или не поддерживают) пассивный режим.

Например, утилита FTP командной строки, поставляемая с демоном Solaris ftp, поддерживает пассивный режим начиная с Solaris 9 (начиная с sccs v1.20). Посмотрите справочные страницы (in.ftpd), опция -p.

С огромной популярностью Всемирной паутины, многие люди предпочитают использовать свой веб-браузер в качестве FTP-клиента.

Большинство браузеров поддерживают только пассивный режим при доступе к URL-адресам ftp://. Это может быть как хорошим, так и плохим фактов, в зависимости от того, какие серверы и брандмауэры настроены для поддержки.

Пример пассивного FTP

Ниже приведен пример пассивного сеанса FTP.

Изменены только имена серверов, IP-адреса и имена пользователей.

В этом примере сеанс FTP инициируется от user01 (192.0.0.1), окна Solaris, на котором работает стандартный клиент командной строки FTP, до dest_serv (192.0.0.2), Solaris, работающего под управлением Solaris 9 ftpd.

Флаг отладки (-d) используется с клиентом FTP, чтобы показать, что происходит за кулисами.

Все, что выделено курсивом, является результатом отладки, который показывает фактические команды FTP, отправляемые на сервер, и ответы, генерируемые этими командами.

Нормальный вывод на сервер показан черным, а ввод пользователя – жирным.

Обратите внимание на разницу в команде PORT в этом примере по сравнению с примером активного FTP.

Здесь мы видим, что порт открывается в системе сервера (192.0.0.2), а не на клиенте. См. Обсуждение формата команды PORT выше в разделе «Пример активного FTP».

$ ftp -d dest_serv
Connected to dest_serv.
220 dest_serv FTP server ready.
Name (dest_serv:boqueron): root
---> USER root
331 Password required for root.
Password:
---> PASS XXXX
230 User root logged in.
---> SYST
215 UNIX Type: L8 Version: SUNOS
Remote system type is UNIX.
---> TYPE I
200 Type set to I.
Using binary mode to transfer files.
ftp> passive
Passive mode on.
ftp> ls
---> PASV
227 Entering Passive Mode (192,0,0,2,7,176)
---> TYPE A
200 Type set to A.
---> NLST
150 Opening ASCII mode data connection for file list.
TT_DB
bin
cdrom
(...)
vol
xfn
226 Transfer complete.
191 bytes received in 0.027 seconds (7.04 Kbytes/s)
---> TYPE I
200 Type set to I.
ftp> quit
---> QUIT
221-You have transferred 0 bytes in 0 files.
221-Total traffic for this session was 599 bytes in 1 transfers.
221-Thank you for using the FTP service on dest_serv.
221 Goodbye.

Резюме

Следующая таблица должна помочь администраторам запомнить, как работает каждый режим FTP:

Активный FTP : 
команда : client >1024 -> server 21 
данные :    client >1024 <- server 20 
Пассивный FTP : 
команда : client >1024 -> server 21 
данные :    client >1024 -> server >1024

Краткий обзор плюсов и минусов активного и пассивного FTP также по порядку:

Активный FTP полезен для администратора сервера FTP, но вреден для администратора на стороне клиента.

FTP-сервер пытается подключиться к случайным высоким портам на клиенте, которые почти наверняка будут заблокированы брандмауэром на стороне клиента.

Пассивный FTP полезен для клиента, но вреден для администратора FTP-сервера.

Клиент установит оба соединения с сервером, но одно из них будет со случайным портом с высокой пропускной способностью, который почти наверняка будет заблокирован брандмауэром на стороне сервера.

К счастью, есть некоторый компромисс.

Поскольку администраторам, работающим с FTP-серверами, необходимо сделать свои серверы доступными для наибольшего числа клиентов, им почти наверняка потребуется поддержка пассивного FTP.

Доступность портов высокого уровня на сервере можно минимизировать, указав ограниченный диапазон портов для использования FTP-сервером.

Таким образом, все, кроме этого диапазона портов, может быть защищено на стороне сервера.

Хотя это не устраняет все риски для сервера, оно значительно снижает его. См. Приложение 1 для получения дополнительной информации.

Настройка пассивного режима FTP на Windows Server

На чтение 3 мин Опубликовано Обновлено

FTP (File Transfer Protocol) — это протокол передачи файлов, который широко используется для обмена файлами между клиентом и сервером. Одним из вариантов настройки FTP на сервере Windows является настройка пассивного режима.

Пассивный режим FTP позволяет клиентам инициировать соединение с сервером и передавать данные через указанный порт. В этом режиме сервер открывает динамический диапазон портов для передачи данных, что позволяет обойти проблемы сетевых настроек, такие как NAT и файрволы.

Для настройки пассивного режима FTP на сервере Windows необходимо выполнить несколько шагов. Сначала нужно открыть порты в брандмауэре Windows, затем настроить FTP-сервер для использования пассивного режима и указать диапазон портов, которые будут использоваться для передачи данных. После этого клиенты смогут установить подключение к серверу в пассивном режиме и передавать данные.

При активном режиме клиент устанавливает соединение с сервером и передает команду для передачи файла. Сервер устанавливает обратное соединение с клиентом, чтобы отправить файл. Но активный режим не всегда работает из-за возможных блокировок на стороне клиента.

Пассивный режим FTP – это более гибкий вариант, который позволяет установить соединение, когда клиент отправляет команду для получения файла. Сервер открывает прослушивающий порт и ожидает соединения от клиента. Затем сервер отправляет запрошенный файл. Чтобы настроить пассивный режим FTP на сервере Windows, следуйте этим шагам:

  1. Откройте Командную строку (CMD) или PowerShell с правами администратора.
  2. Введите команду «netsh advfirewall set global StatefulFTP enable» и нажмите Enter.
  3. Откройте «Панель управления» и найдите «Центр управления сетями и общим доступом».
  4. Нажмите на название сети, которую вы используете (например, «Ethernet»).
  5. В открывшемся окне нажмите на кнопку «Свойства».
  6. Выберите «Протокол Интернет версии 4 (TCP/IPv4)» и нажмите на кнопку «Свойства».
  7. В открывшемся окне нажмите на кнопку «Дополнительно».
  8. Перейдите на вкладку «WINS» и нажмите на кнопку «Добавить».
  9. Введите IP-адрес сервера FTP в поле «Текущий IP-адрес» и нажмите «Добавить».
  10. Нажмите на кнопку «OK» для сохранения настроек.

Теперь вы успешно настроили пассивный режим FTP на сервере Windows. Клиенты смогут без проблем получать файлы с вашего FTP-сервера. Убедитесь, что в настройках FTP-клиента указан пассивный режим передачи данных.

Пассивный режим FTP на сервере Windows

Файловый протокол передачи (File Transfer Protocol, FTP) широко используется для обмена файлами между сервером и клиентом в сетях. В режиме активного FTP-соединения клиент инициирует установку соединения и открывает порт для передачи данных. Однако, в определенных сетевых конфигурациях может потребоваться использование пассивного режима FTP.

Пассивный режим FTP позволяет клиентам, находящимся за NAT или брандмауэром, подключаться к FTP-серверу без необходимости изменения настроек сети. В пассивном режиме клиент устанавливает управляющее соединение с сервером, но передача данных происходит через отдельный пассивный порт.

Настройка пассивного режима FTP на сервере Windows может быть выполнена следующими шагами:

  1. Откройте «Управление сервером» и выберите «Роли и функции».
  2. Выберите «Добавление ролей и компонентов» и в разделе «Выберите сервер» выберите текущий сервер.
  3. Перейдите к разделу «Серверные роли» и выберите «Сервер FTP».
  4. Установите флажок рядом с опцией «FTP-сервер» и нажмите «Далее».
  5. Выберите настройки для FTP-сервера, включая SSL-сертификаты, и нажмите «Далее».
  6. Настройте правила брандмауэра для разрешения входящих соединений на пассивных портах FTP.
  7. Завершите процесс установки и настройки FTP-сервера на сервере Windows.

После выполнения указанных шагов, пассивный режим FTP будет настроен на сервере Windows, что позволит клиентам подключаться и обмениваться файлами без необходимости изменения настроек сети.

  • Windows forms работа с таблицами
  • Windows gadgets windows 7 clock
  • Windows forms перейти на другую форму
  • Windows git could not read from remote repository git
  • Windows future experience pack что это