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, и это работает, а ваш код - нет. Это связано с тем, что многие брандмауэры обнаруживают известные приложения и пропускают их, в то же время предотвращая другие приложения.