Подтвердить что ты не робот

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

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

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

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

230 OK. Current restricted directory is /
ftp> quote pasv 
227 Entering Passive Mode (31,170,167,221,116,239)    
ftp> cd os    
250 OK. Current directory is /os    
ftp> dir    
500 I won't open a connection to 10.23.16.248 (only to 113.193.128.177)    
425 No data connection    
ftp>

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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


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

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

(Я автор WinSCP)

Ответ 3

Хотя это не отвечает на вопрос непосредственно о командной строке, но из ОС Windows, используйте проводник Windows ftp://[email protected]

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

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

Ответ 4

Клиент CURL поддерживает протокол FTP и работает в пассивном режиме. Загрузите версию WITHOUT SSL, и вам не нужны библиотеки openssl.dll. Только одно приложение командной строки curl.exe.
http://www.paehl.com/open_source/?CURL_7.35.0

curl.exe -T c:\test\myfile.dat ftp://ftp.server.com/some/folder/myfile.dat --user myuser:mypwd

Другим является Putty psftp.exe, но запрос проверки ключа сервера требует трюка. Эта командная строка вводит NO для клавиши подсказки подсказки, которая не хранится в реестре только в этот раз. Вам нужен внешний script файл, но иногда он хорош, если вы копируете несколько файлов вверх и вниз.
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

echo n | psftp.exe ftp.server.com -l myuser -pw mypwd -b script.txt

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

put "C:\test\myfile.dat" "/some/folder/myfile.dat"
quit

Ответ 5

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

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

Вы можете осуществлять пассивную передачу 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-сервер.

так для меня:

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: я подключаюсь к некоторым старым FTP-серверам YMMV

Ответ 6

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

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

ftp -p {host}

Ответ 7

FileZilla работает хорошо. Я использую FileZilla FTP-клиент "Ручная передача", который поддерживает пассивный режим.

Пример: Откройте FileZilla и выберите "Передача" >> "Ручная передача", затем в окне "Ручная передача" выполните следующее:

  1. Подтвердите правильную опцию загрузки/выгрузки
  2. Для удаленного доступа: введите имя каталога, в котором находится файл для загрузки.
  3. Для удаленного: введите имя файла для загрузки
  4. Для Local: перейдите в каталог, в который вы хотите скачать файл
  5. Для локальных: введите имя файла для сохранения загруженного файла как (используйте то же имя файла, что и файл для загрузки, если вы не хотите его изменять)
  6. Установите флажок "Начать перевод немедленно" и нажмите "ОК"
  7. Загрузка должна начаться на мгновение
  8. Примечание. Если вы забыли установить флажок "Начать передачу немедленно"... Нет проблем: просто щелкните правой кнопкой мыши файл, который нужно загрузить (в пределах очереди процессов (очереди передачи файлов) в нижней части панели окна FileZilla, и выберите "Выбрать"). "Очередь процессов"
  9. Процесс загрузки должен начаться на мгновение
  10. Готово