Renci ssh.net Невозможно установить соединение, потому что целевая машина активно отказалась от него.

Мы недавно развернули проект в производство и теперь получаем сообщение об ошибке, когда пытаемся подключиться к внешнему sftp-компьютеру: "Невозможно установить соединение, потому что целевая машина активно отказала ему". Когда я разрабатывал приложение и тестировал его, у нас не было проблем с подключением к этому серверу. Кто-нибудь, пожалуйста, объясните мне, что будет отличаться? Да, у меня есть права администратора, а у пула приложений на рабочем сервере нет. Я не уверен, может ли это быть причиной проблемы, или это может быть что-то на сервере внешнего клиента или их брандмауэр блокирует нас.

Если кто-то может объяснить это мне и объяснить, как я могу решить эту проблему, я был бы очень признателен.

заранее спасибо

3 ответа

Решение

Это стандартная ошибка TCP

WSAECONNREFUSED - 10061

С точки зрения Клиента это означает, что "по этому адресу нет сокета, который прослушивает этот порт" ("активно отказано" - это красная сельдь).

i) проверьте адрес ii) проверьте порт iii) проверьте брандмауэр (ы)

Если вы используете localhost, уточнить 127.0.0.1 вместо.

Когда я использовал SSH.Net и хост был указан как localhost это бросило исключение, что хост активно отказывался от соединения WSAECONNREFUSED - 10061, Когда я указал 127.0.0.1 вместо этого может быть установлено соединение. Я думаю, что это связано с реализацией в SSH.Net:

    internal static IPAddress GetIPAddress(this string host)
    {
        IPAddress ipAddress;
        if (!IPAddress.TryParse(host, out ipAddress))
            ipAddress = Dns.GetHostAddresses(host).First();

        return ipAddress;
    }

Который не разрешает допустимое имя хоста для localhost, по-видимому. C# Interactive дает следующее:

> Console.WriteLine(Dns.GetHostAddresses("localhost").First());
::1

Значение ::1 не похоже на допустимый IP-адрес для использования сокетами.

Из нашего большого опыта (мы предлагаем собственные сетевые компоненты) - это проблема брандмауэра. Брандмауэр не пропускает ваши запросы. Это обычная ситуация, когда вы запускаете Putty, и это работает, а ваш код - нет. Это связано с тем, что многие брандмауэры обнаруживают известные приложения и пропускают их, в то же время предотвращая другие приложения.

Другие вопросы по тегам