Назад | Перейти на главную страницу

FTP - 500 Я не буду открывать соединение с xx.xx.xx.xx

Я использую сервер на AWS и подключаюсь к FTP-сайту партнера (не очень понимаю, что они запускают). У моего сервера эластичный IP. В результатах ниже xx.xx.xx.xx - это внутренний IP-адрес (такой же, как я получил от IPConfig). yy.yy.yy.yy - это внешний IP-адрес (такой же, как у меня RDP).

Connected to ftp.site.com.
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 22:47. Server port: 21.
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
User (ftp.site.com:(none)): someuser
331 User someuser OK. Password required
Password:
230 OK. Current restricted directory is /
ftp> literal pasv
227 Entering Passive Mode (69,28,68,87,255,170)
ftp> ls
500 I won't open a connection to xx.xx.xx.xx (only to yy.yy.yy.yy)

Я попробовал режим PASV, но он не работает.

В моей группе безопасности ничего не открыто, кроме RDP.

Брандмауэр Windows также работает на сервере с конфигурацией по умолчанию Amazon.

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

Я знаю, что FTP необычный через NAT, когда открываемые соединения возвращаются. Что мне нужно сделать?

FTP-клиент командной строки, встроенный в Windows, вообще не поддерживает пассивный режим. Те хаки, которые вы нашли в Интернете по поводу literal pasv или quote pasv на самом деле ничего не делайте с FTP-клиентом; они говорят сервер для входа в пассивный режим, но клиент остается в блаженном неведении. Вам потребуется сторонний FTP-клиент.

Проблема в том, что ваша команда pasv сообщает серверу подключиться к внутреннему ip. Не твой внешний ip. Это не сработает по двум причинам.

  1. Сервер не видит ваш внутренний ip.
  2. Хотя протокол ftp поддерживает настройку подключения для передачи данных, чтобы разговаривать с IP-адресом, отличным от управляющего соединения. Большинство серверов теперь отказываются его соблюдать (по соображениям безопасности), некоторые просто игнорируют ip и используют только порт. Другие, как этот, просто откажутся принять команду.