Ftp команды windows пассивный режим

Обновлено: 08.07.2024

Команда FTP реализует обмен файлами с FTP сервером в командной строке Windows. Утилита ftp.exe входит в стандартный дистрибутив всех версий операционных систем семейства Windows и позволяет выполнять обмен с сервером как в командном, так и в интерактивном режиме.

Формат командной строки:

FTP [-v] [-d] [-i] [-n] [-g] [-s:имя_файла] [-a] [-A] [-x:sendbuffer] [-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [узел]

- команды mget и mput принимают параметры y/n/q как YES/NO/QUIT.
- для прекращения выполнения команд нажмите комбинацию клавиш CTRL+C.


При запуске без параметров, FTP переходит в интерактивный режим, ожидая ввода команд пользователем. На экране отображается приглашение - ftp > .

Для получения списка доступных команд можно ввести знак вопроса или команду help

Подсказку по конкретной команде можно получить введя знак вопроса или help и имя команды:

? connect
help connect

Список команд FTP клиента Windows:

Как видно из списка перечисленных команд, стандартный клиент FTP в операционных системах Windows поддерживает далеко не полный перечень стандартных ftp-команд и, что самое неприятное, он не поддерживает команду переключения в пассивный режим ( passv ) обмена с сервером FTP, что делает его непригодным для обмена данными с серверами FTP, подключение к которым выполняется с использованием технологии трансляции сетевых адресов NAT . Другими словами, для обмена файлами с внешними, по отношению к подсети клиента, серверами, стандартный FTP-клиент не подходит. Это касается всех версий Windows, включая и Windows 10. Именно этот факт предопределяет область использования утилиты ftp.exe - только в локальных сетях, где возможно прямое TCP-соединение между клиентом и сервером.

Пример сессии с использованием клиента FTP Windows:

open 192.168.1.1 - открыть соединение с сервером 192.168.1.1
user admin - использовать имя пользователя admin при подключении к серверу. В ответ на эту команду сервера запросит пароль.
adminpass - ввод пароля для пользователя admin
ls - отобразить список файлов и папок в удаленном каталоге
get myfile.txt - принять файл myfile.txt из удаленного каталога в текущий локальный каталог.
lcd C:\files - сменить текущий локальный каталог.
get myfile.txt - принять файл myfile.txt из удаленного каталога в текущий локальный каталог ( C:\files ) .

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

В Ubuntu ftp -p для пассивного режима работает нормально.

Как мне сделать то же самое в Windows?

Я пытался с quote pasv , но я получаю следующую ошибку:

Мой брандмауэр отключен.

Windows на самом деле не поддерживает пассивный режим.

Эти аргументы предназначены для отправки различных команд, и pasv - это не то, о чем думала Microsoft, когда они это писали.

Вам нужно будет найти стороннее программное обеспечение, такое как WinSCP, которое поддерживает использование командной строки, и использовать его вместо Windows.

Клиент командной строки Windows FTP ( ftp.exe ) не поддерживает пассивный режим ни в одной версии Windows. Это делает его довольно бесполезным в наше время из-за вездесущих брандмауэров и NAT.

Использование quote pasv не поможет. Он переключает только сервер в пассивный режим, но не клиент.

Вместо этого используйте любой другой клиент командной строки Windows FTP. Большинство других поддерживают пассивный режим.

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

Хотя это не дает прямого ответа на вопрос о командной строке, но из ОС Windows, используйте проводник Windows ftp: // username @ server

это будет использовать пассивный режим по умолчанию

Для командной строки активным режимом по умолчанию

Команда quote PASV не является командой для программы ftp.exe , это команда для FTP-сервера, запрашивающая порт высокого порядка для передачи данных. Пассивная передача - это передача данных FTP через эти порты высокого порядка, в то время как контроль поддерживается в нижних портах.

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

Вы можете выполнить пассивную FTP-передачу между двумя разными хостами (но не двумя соединениями на одном хосте) следующим образом:

Откройте две подсказки, используйте одну для подключения ftp.exe к вашему исходному FTP-серверу и одну для подключения ftp.exe к вашему целевому FTP-серверу.

Теперь установите пассивное соединение между серверами, используя необработанные команды PASV и PORT. Команда quote PASV ответит IP/портом в многоточии. Используйте эти данные для команды quote PORT <data> . Теперь ваша пассивная связь установлена, если предположить, что брандмауэры не заблокировали один или несколько из четырех портов (2 для управления FTP, 2 для данных FTP)

Затем начните прием данных с помощью команды quote STOR <filename> на принимающий FTP-сервер, затем отправьте управляющую команду quote RETR <filename> на исходный FTP-сервер.

Cavet: я подключаюсь к некоторым старым FTP-серверам YMMV

script.txt (может быть введена любая команда ftp)

Это распространенная проблема . когда мы запускаем соединение ftp, только внешний ip открывает порт для соединения pasv. но ip за NAT не открывает соединение, поэтому пассивное соединение не удается с помощью команды PASV

нам нужно указать, что при открытии соединения, так что открывать соединение с

Если вы используете Windows 10, установите подсистему Windows для Linux, WSL и Ubuntu.

Как использовать пассивный режим FTP в командной строке Windows?

В Ubuntu ftp -p для пассивного режима работает нормально.

Как мне сделать то же самое в Windows?

Я пробовал с quote pasv но я получаю следующую ошибку:

Мой брандмауэр отключен.

  • Если вы не против использования Firefox, получите бесплатное расширение FireFTP, которое поддерживает пассивный режим и использует его по умолчанию.

Клиент командной строки Windows FTP ( ftp.exe ) не поддерживает пассивный режим ни в одной версии Windows. В настоящее время это делает его бесполезным из-за повсеместного использования брандмауэров и NAT.

С использованием quote pasv не поможет. Переключает только сервер в пассивный режим, но не клиент.

Вместо этого используйте любой сторонний клиент командной строки Windows FTP. Большинство других поддерживает пассивный режим.

Например, WinSCP по умолчанию работает в пассивном режиме, и есть руководство по преобразованию сценария Windows FTP в сценарий WinSCP. Если вы начинаете с нуля, см. Руководство по автоматизации передачи файлов на FTP с помощью WinSCP. Кроме того, графический интерфейс WinSCP может сгенерировать для вас шаблон сценария.

Windows фактически не поддерживает пассивный режим.

Эти аргументы предназначены для отправки различных команд и pasv это не то, о чем Microsoft думала, когда писала это.

Вам нужно будет найти стороннее программное обеспечение, такое как WinSCP, которое поддерживает использование командной строки, и использовать его вместо собственного программного обеспечения Windows.

  • 1 Я думаю, что pasv поддерживает в Windows 7.
  • 2 Я тестировал XP, 7, 2k8, 2k12
  • 12 Поправка: "Окна ftp.exe не поддерживает пассивный режим. "ОС поддерживает его без проблем, если вы используете полнофункциональный FTP-клиент.
  • 5 pasv не поддерживается вплоть до 8.1 Pro. Нет, не поддерживается. Попробуйте WinSCP (бесплатно, с открытым исходным кодом, с возможностью создания сценариев, работает).

Хотя это не дает прямого ответа на вопрос о командной строке, но в ОС Windows используйте проводник Windows ftp: // username @ server

по умолчанию будет использоваться пассивный режим

Для командной строки активный режим - по умолчанию

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

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

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

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

Теперь установите пассивное соединение между серверами, используя необработанные команды PASV и PORT. В quote PASV команда ответит IP / портом в многоточии. Используйте эти данные для quote PORT команда. Теперь ваше пассивное соединение установлено, если брандмауэры не заблокировали один или несколько из четырех портов (2 для управления FTP, 2 для данных FTP)

Далее начните прием данных с quote STOR на принимающий FTP-сервер, затем отправьте управляющую команду quote RETR на исходный FTP-сервер.

так что для меня:

Кавет: Я подключаюсь к некоторым старым FTP-серверам YMMV

script.txt (можно набрать любую команду ftp)

  • 1 psftp это SFTP-клиент, а не FTP-клиент. Более того, рекомендация автоматически принимать ключ хоста SSH представляет собой ужасную угрозу безопасности.

Если вы используете Windows 10, установите подсистему Windows для Linux, WSL и Ubuntu.

  • Верно, но предположительно OP заинтересован в решении, использующем ftp.exe а не другой клиент.

Согласно этой статье Egnyte, пассивный FTP поддерживается начиная с Windows 8.1.

должен быть установлен со значением: yes

Если вам не нравится ковыряться в реестре, сделайте следующее:

Каждый раз, когда вы используете ftp.exe , не забудьте передать

команда сразу после входа на удаленный хост.

PS: Грант ftp.exe доступ к частным сетям, если ваш брандмауэр жалуется.

  • 1 Use PASV ключ реестра не влияет на ftp.exe , это настройка проводника. + quote pasv тоже не действует. + Тот факт, что ваш брандмауэр жалуется, только доказывает это.
  • @MartinPrikryl Ах, это / что / почему это не работает? Я тоже пробовал это решение. Спасибо за объяснение.

Это распространенная проблема . когда мы запускаем ftp-соединение, только внешний ip открывает порт для pasv-соединения. но IP за NAT не открывает соединение, поэтому пассивное соединение не работает с командой PASV

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

Для пассивного режима вам нужно использовать команду "literal" ftp> literal PASV

Все мы знаем сочетание буковок FTP, которое расшифровывается как File Transfer Protocol. Старая, но до сих используемая технология передачи файлов между двумя компьютерами с использованием TCP/IP сети.

Большинство из нас пользуется для работы с этим протоколом какими-либо утилитами или модулями файловых менеджеров. Но давайте представим себе ситуацию, когда нужно получить доступ к FTP-серверу через командную строку. Никаких панелей со списком файлов и кнопочками "Копировать" и "Удалить" там у Вас не будет. (Кстати, я часто именно через командную строку лажу - мне так просто даже быстрее - если приходится что-то сделать или проверить FTP.)

Итак, команда для работы с FTP как в Windows, так и в Unix (включая Linux Debian, CentOS, ubuntu, rhel, FreeBSD и т.д.) одинаковая - так и называется - "ftp".

Просто подсоединиться к определенному серверу - синтаксис тоже отличаться не будет:

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

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

Открываем консоль. Запускаем нашу утилиту, введя буквы ftp
Видим на экране приглашение:

Выдает список поддерживаемых команд

Получение короткого описания указанной команды.

Присоединиться к указанному серверу (пишем его имя либо IP-адрес).
Также можно указать порт через пробел. По-умолчанию используется стандартный - 21.

При этом сервер Вас спросит логин и пароль.


CLOSE или DISCONNECT

Закрыть соединение с текущим FTP сервером.

BYE или QUIT

Закрыть соединение и выйти из утилиты FTP.

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

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

Показать список файлов и директорий в текущей папке на сервере.

MLS или MDIR

Выгрузить список файлов из нескольких директорий в файл на Ваш компьютер.

Перейти в указанную папку на сервере.

Частный случай этой команды: CDUP - перейти в родительскую директорию - то же самое, что и "CD ..":

Перейти у указанную папку на Вашем компьютере.

Показать текущий путь (текущую папку) на FTP сервере.

GET или RECV

Загрузить с FTP сервера в текущую папку Вашего компьютера указанный файл.

Загрузить несколько файлов в текущую папку Вашего компьютера с сервера FTP.

Загрузить с сервера FTP на Ваш компьютер указанный файл только если Ваш файл старее (т.е. удаленный файл свежее).

Здесь первый аргумент - имя файла на сервере, а второй аргумент - имя файла на Вашем компьютере.

Загрузить на FTP сервер указанный файл с Вашего компьютера.

Загрузить на сервер несколько файлов с Вашего компьютера.

Удалить указанный файл на сервере.

Удалить несколько файлов на сервере.

Создать директорию на сервере.

Удалить директорию на сервере

Избавляет от необходимости подтверждать получение файлов по маске нажатием клавиши "Y".

Установка режима передачи данных в двоичном формате (подходит для любых типов файлов).

Читайте также: