2015-10-19 3 views
1

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

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

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

ответ

3

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

WSAECONNREFUSED - 10061

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

я) проверить адрес б) проверить порт III) проверить брандмауэр (ы)

+0

Спасибо, что указали нам на правильный путь. Наш брандмауэр был немного строгим, и наша DMZ не могла получить деньги от сервера sftp. – Nathan

1

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

+0

Точно, брандмауэр был слишком строгим для нашей DMZ, и это блокировало ack с сервера sftp. Спасибо! – Nathan

2

Если вы используете 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-адрес для сокетов использовать.

Смежные вопросы

 Смежные вопросы