Функция командной строки FTP не работает

12

Я использую Windows 7 и у меня есть несколько клиентских приложений FTP, работающих без проблем. Однако, когда я использую FTP из командной строки, я могу подключиться, войти в систему (после ввода имени пользователя и пароля), но он всегда отключается при использовании команды dir или ls. Ответ:

Соединение закрыто удаленным хостом.

Как я могу решить эту проблему?

Hong
источник
Откройте порты 20, 21 в брандмауэре.
Шон Перкинс

Ответы:

13

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

Скорее всего, это заблокировано вашим маршрутизатором или брандмауэром Windows. Вам нужен клиент, который поддерживает режим PASV .

Вы можете включить режим PASV в Internet Explorer . Или используйте другой клиент. Я не уверен, может ли версия командной строки использовать режим PASV. Это очень простой клиент.

Мэтт Н
источник
Спасибо, Мэтт. Я думал, что FTP-клиент из командной строки по умолчанию использует пассивный режим, но я только что обнаружил несколько сообщений о том, что FTP-интерфейс командной строки Windows фактически исключает пассивный режим. IE всегда отлично работает на моей машине для FTP. Я просто хочу использовать командную строку для проверки некоторых необработанных данных с FTP-сервера.
Гонконг
В качестве эксперимента вы могли увидеть, имеет ли значение включение или отключение PASV в Internet Explorer ... или дает похожую или ту же ошибку.
Бароп
1
ftp> PASV - Неверная команда. (Windows 7 Ent.). Этот ответ именно то, что происходит на работе.
Bratch
6
это должно быть QUOTE PASV
JosephStyons
5

У меня возникла проблема с передачей файлов по FTP, когда я вошел в соответствующую коробку. Это создаст имя файла, но файл будет пустым. Я решил это, сделав следующее:

  • Перейдите в Панель управления → Брандмауэр Windows → Расширенные настройки → Правила для входящих подключений.
  • Дважды щелкните столбец Имя, чтобы отсортировать по имени
  • Прокрутите вниз, пока не увидите два правила под названием «Программа передачи файлов»; на моем компьютере они были заблокированы (большой красный круг с линией через него)
  • Двойной щелчок по правилу
  • На вкладке « Общие » в разделе « Действие» выберите « Разрешить подключение».
  • щелчок OK
  • Сделай это для другого правила

Это должно быть хорошо идти сейчас.

Keljo
источник
Каковы последствия этого для безопасности?
Питер Мортенсен
Программы на вашем компьютере теперь могут использовать ftp.
Марк Девен
Удаление правил, затем подключение через FTP и ввод чего-то вроде команды «dir» (запуск брандмауэра Windows для запроса разрешения FTP и повторное создание правил, если вы говорите «Да») также могут помочь.
mlvljr
5

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

Настройка FTP в активном режиме в настоящее время может быть затруднена из-за брандмауэров и NAT.

Вероятно, из-за вашего локального брандмауэра или NAT сервер не смог подключиться обратно к вашему клиенту, чтобы установить соединение для передачи данных для списка каталогов ( lsили dirкоманд).

Или ваш клиент не знает о своем внешнем IP-адресе и вместо этого предоставляет внутренний адрес серверу (в PORTкоманде), который сервер, очевидно, не может использовать.

Смотрите мою статью Конфигурация сети для активного режима .


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

К сожалению, клиент командной строки Windows FTP (the ftp.exe) вообще не поддерживает пассивный режим. Это делает его довольно бесполезным в наши дни.

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

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

(Я автор WinSCP)

Мартин Прикрыл
источник
Работает на любой версии Windows (начиная с XP). Какая у вас ошибка? Попробуйте задать новый отдельный вопрос с более подробной информацией.
Мартин Прикрыл
Вам нужно оба winscp.comи winscp.exeв одной папке. Я считаю, что сообщение об ошибке ясно говорит, что winscp.comищет winscp.exeв своей папке. См. Также winscp.net/rus/docs/executables
Мартин Прикрыл,
Np, пожалуйста, удалите комментарии.
Мартин Прикрыл
4

Я столкнулся с этой проблемой на сервере Windows 2008.

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

Что решило проблему, добавив исключение в брандмауэр Windows для C: \ Windows \ system32 \ ftp.exe

брюки
источник
1
По умолчанию брандмауэр Windows включает ftp.exe в своем исключении, но только для домашней / рабочей сети. Убедитесь, что вы не в общедоступной сети, иначе разрешите ftp для общедоступной сети.
Джагс
1

У меня возникла та же проблема со сторонним программным обеспечением POS на компьютере под управлением Windows 7, который отправляет данные транзакций клиента обратно на сервер SQL.

Это работало нормально, пока местоположение клиента не изменило интернет-провайдеров и, следовательно, статические IP-адреса. Команды FTP командной строки не работали после первоначального входа в систему, и ни одно из средств, которые я нашел онлайн или этот поток, не работало.

Просто для удовольствия я заново создал правило FTP в брандмауэре, дешевом маршрутизаторе / брандмауэре D-Link и альте, похоже, оно снова работает.

Сплетение шалфея
источник
0

Проблема с FTP

Открытые порты на Azure NSG и межсетевом экране сервера: 21,20,4000-40009,990,14147

Проблема: Клиент не может подключиться к ftp из командной строки и Powershell

Мы можем связаться с testuser, но не можем увидеть каталог / Список

Установлен Wireshark на сервере и на моем ноутбуке для захвата пакетов. Создан фильтр на Wireshark с «ftp» и «IP». При захвате пакета не указывается погода, является ли он пассивным или активным режимом, а исходный IP-адрес правильный. (настраиваем первичный и вторичный IP на сервере)

Мы обнаружили, что соединение ftp не работает из командной строки. Попытка инициировать соединение с ftp.abcd.com, которое было разрешено в 11.22.33.44, а не к фактическому FTP-серверу. 44.33.22.11. IP-адреса 11.22.33.44 и 44.33.22.11 настроены на одном компьютере. Однако DNS преобразовывался в дополнительный IP-адрес FTP вместо основного

Первоначально мы также обнаружили, что FTP-соединения с 11.22.33.44 работали нормально, и эти соединения были активными. Мы не смогли увидеть, что здесь работает пассивный режим. Кроме того, при инициализации подключения к 11.22.33.44 из командной строки Commad сеанс останавливается после того, как вы даете команду 'dir', однако то же самое работает с другими клиентами ftp, такими как FileZilla и Winscp.

Я попытался протестировать с WinSCP и FileZilla и увидел, что соединения в пассивном режиме работают нормально, а Active - нет, что является ожидаемым. Мы проверили, почему команда «dir» не работает с устройств после успешной аутентификации, мы увидели, что брандмауэр Windows блокирует соединение. Мы отключили брандмауэр, и все стало работать как положено. Я проверил то же самое на своем конце после создания правила брандмауэра, проблемы были решены. Была одна система, которая даже после отключения брандмауэра застряла в списке каталогов, это может быть проблемой в этой системе, или соединения блокируются внешним фактором. Так как после отключения большинство из нас способны нормально работать.

на машине необходимо выполнить настройки. Выберите «Панель управления» → «Брандмауэр Windows» → «Дополнительные настройки» → «Входящие правила». Дважды щелкните столбец «Имя», чтобы отсортировать по имени. Прокрутите вниз, пока не увидите два правила «Программа передачи файлов»; на моем компьютере было установлено значение Блокировать (большой красный кружок с линией через него). Дважды щелкните правило. На вкладке Общие в разделе Действие выберите Разрешить подключение. Нажмите кнопку ОК.

Деш Кант
источник
Это то, что ответ @Keljo уже говорит (на самом деле вы скопировали его / ее ответ).
Мартин Прикрыл