Я настроил в IIS несколько FTP-сайтов, используя приведенные здесь инструкции: https://docs.microsoft.com/en-us/iis/publish/using-the-ftp-service/using-ftp-virtual-host-names-in-iis-7
См. Конфигурацию, которую я получил ниже.
В IIS я настроил базовую аутентификацию и использовал пользователя mysite_ftp для «Подключиться как», при тестировании настроек я получаю зеленые галочки как для аутентификации, так и для авторизации.
Настройки IIS:
Когда я использую Filezilla для попытки подключения, я получаю такой журнал:
Пробовал с именем хоста VPS: h2746286.stratoserver.net
Status: Resolving address of h2746286.stratoserver.net
Status: Connecting to 85.214.200.30:21...
Status: Connection established, waiting for welcome message...
Status: Insecure server, it does not support FTP over TLS.
Command: USER tv_ftp
Response: 331 Valid hostname is expected.
Command: PASS ***********
Response: 503 Login with USER first.
Error: Critical error: Could not connect to server
Пробовал с именем хоста: www.telefonievergelijken.nl
Status: Resolving address of www.telefonievergelijken.nl
Status: Connecting to 85.214.200.30:21...
Status: Connection established, waiting for welcome message...
Status: Insecure server, it does not support FTP over TLS.
Command: USER tv_ftp
Response: 331 Valid hostname is expected.
Command: PASS ***********
Response: 503 Login with USER first.
Error: Critical error: Could not connect to server
Пробовал с именем хоста: ftp.telefonievergelijken.nl
Status: Resolving address of ftp.telefonievergelijken.nl
Status: Connecting to 85.214.200.30:21...
Status: Connection established, waiting for welcome message...
Status: Insecure server, it does not support FTP over TLS.
Command: USER tv_ftp
Response: 331 Valid hostname is expected.
Command: PASS ***********
Response: 503 Login with USER first.
Error: Critical error: Could not connect to server
applicationHost.config
<sectionGroup name="system.ftpServer">
<section name="log" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
<section name="firewallSupport" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
<section name="caching" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
<section name="providerDefinitions" overrideModeDefault="Deny" />
<sectionGroup name="security">
<section name="ipSecurity" overrideModeDefault="Deny" />
<section name="requestFiltering" overrideModeDefault="Deny" />
<section name="authorization" overrideModeDefault="Deny" />
<section name="authentication" overrideModeDefault="Deny" />
</sectionGroup>
<section name="serverRuntime" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
</sectionGroup>
<sites>
<site name="othersite" id="2">
<application path="/" applicationPool=".NET v4.5">
<virtualDirectory path="/" physicalPath="E:\othersite\wwwroot" userName="othersite_web" password="[enc:IISCngProvider:b1dn9+We00KRNWUB6shbPm/hLtBOF2hOG9We5zVgaEmYL5C/fDLxDc3QH9Rnvi79SjeM+Rauk/bQWEBzJnw=:enc]" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:www.othersite.nl" />
<binding protocol="http" bindingInformation="*:80:othersite.nl" />
</bindings>
</site>
<site name="telefonievergelijken" id="3">
<application path="/" applicationPool=".NET v4.5">
<virtualDirectory path="/" physicalPath="E:\telefonievergelijken\wwwroot" userName="tv_web" password="[enc:IISCngProvider:x+PhGwZweUwR53tUgGTdEGui8k4gIJRASehxKVtsPoTtxNIA8aRe8WUwvdLuEdzSQicrJVDwen7e/C6x9qfiFyudqtZYwhXuo=:enc]" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:www.telefonievergelijken.nl" />
<binding protocol="http" bindingInformation="*:80:telefonievergelijken.nl" />
</bindings>
<traceFailedRequestsLogging enabled="true" directory="E:\IISData\LogFiles\FailedReqLogFiles" />
</site>
<site name="FTP-othersite" id="1">
<application path="/">
<virtualDirectory path="/" physicalPath="E:\othersite\wwwroot" />
</application>
<bindings>
<binding protocol="ftp" bindingInformation="127.0.0.1:21:" />
</bindings>
<ftpServer>
<security>
<ssl controlChannelPolicy="SslAllow" dataChannelPolicy="SslAllow" />
<authentication>
<basicAuthentication enabled="true" />
</authentication>
</security>
</ftpServer>
</site>
<site name="FTP-TV" id="4">
<application path="/">
<virtualDirectory path="/" physicalPath="E:\telefonievergelijken\wwwroot" userName="tv_ftp" password="[enc:IISCngProvider:xYxqamuKq02/xUcvZGTdEGui8gh3w6XT0hEegnCMZbVIxeWIOypRIZ1u8UAOG/AJg=:enc]" />
</application>
<bindings>
<binding protocol="ftp" bindingInformation="127.0.0.1:21:www.telefonievergelijken.nl" />
</bindings>
<ftpServer>
<security>
<ssl controlChannelPolicy="SslAllow" dataChannelPolicy="SslAllow" />
<authentication>
<basicAuthentication enabled="true" />
</authentication>
</security>
</ftpServer>
</site>
<siteDefaults>
<logFile logFormat="W3C" directory="E:\IISData\LogFiles" />
<traceFailedRequestsLogging directory="E:\IISData\LogFiles\FailedReqLogFiles" />
<ftpServer>
<logFile directory="E:\IISData\LogFiles\FTPLogs" />
<security>
<authentication>
<basicAuthentication enabled="false" />
</authentication>
</security>
</ftpServer>
</siteDefaults>
<applicationDefaults applicationPool="DefaultAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
ОБНОВЛЕНИЕ 1
Ах, я изменил IP-адрес 127.0.0.1 на внешний IP-адрес моего VPS. Когда я пытаюсь связаться с ftp.telefonievergelijken.nl|tv_ftp
Я получаю сообщения об ошибках:
Error: Could not connect to server
Status: Waiting to retry...
Status: Resolving address of ftp.telefonievergelijken.nl|tv_ftp
Status: Connection attempt failed with "EAI_NONAME - Neither nodename nor servname provided, or not known".
ОБНОВЛЕНИЕ 2
Изменены настройки имени пользователя для подключения:
При настройке с двумя или более именами хоста правильное имя виртуального хоста и имя пользователя должны быть отправлены в имени пользователя ftp-клиентом. Разделите имя сайта и пользователя символом вертикальной линии: |
www.example.com|MyUser
Итак, в вашем FTP-клиенте используйте это для имени пользователя:
ftp.telefonievergelijken.nl|tv_ftp
Похоже, вы пытаетесь подключиться к FTP-сайту, используя имя хоста, которое в настоящее время не настроено ни в одной из привязок к FTP-сайту в IIS.
Я основываю это только на выводе ошибок из Filezilla, который вы включили, поскольку вы подвергли цензуре имя хоста (даже в форме примера) из вывода, так что больше нечего делать.
Вам нужно будет настроить привязку на FTP-сайте, которая соответствует имени хоста, которое вы используете для подключения к FTP-сайту (будь то из Filezilla или любого другого FTP-клиента).
РЕДАКТИРОВАТЬ: Из вашей обновленной информации о сообщении я заметил, что ваши привязки для FTP-сайта действительно неправильно настроены - в настоящее время у вас есть только FTP-сайт, привязанный к адресу обратной связи localhost (127.0.0.1). Вам нужно будет привязать его к адресу без обратной связи, который имеет внешнюю маршрутизацию. В зависимости от вашей среды это, скорее всего, будет либо ваш внешний IP-адрес (если он сопоставлен напрямую с сервером), либо внутренний IP-адрес (если у вас настроен NAT). Основываясь на текущей информации, я предполагаю, что у вас должен быть настроен другой FTP-сайт, который перехватывает эти запросы и показывает вам ошибку неверного имени хоста. После правильной настройки этого FTP-сайта все должно работать, как задумано.
Кроме того, ответ @Dre также имеет решающее значение (поэтому вы также должны проголосовать за него) - если у вас есть несколько FTP-сайтов, привязанных к одному IP-адресу, вам нужно будет указать имя хоста в поле `` пользователь '' вашего FTP-клиента в Формат hostname|user
Если вы не размещаете несколько хостов на порту 21 (или любом другом порту, который вы используете), вы также можете просто удалить привязку в настройках IIS, т.е. очистить поле «Имя хоста» в разделе «Привязки сайта» >> «Изменить привязку сайта» ". После этого он должен работать, если у вашего пула приложений есть соответствующие разрешения.