我们最近将一个项目部署到生产中,并且当我们尝试连接到外部sftp机器时,现在收到此错误消息,“由于目标机器主动拒绝它,因此无法建立连接”。当我开发应用程序并测试它时,我们没有连接到此服务器的问题。有人请向我解释会有什么不同吗?是的我有管理权限,生产服务器上的应用程序池没有。我不确定这可能是导致问题的原因,还是外部客户端服务器上的内容或阻止我们的防火墙。
如果有人可以向我解释这个并解释我如何解决这个问题,我将不胜感激。
提前致谢
答案 0 :(得分:4)
如果您使用的是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地址。
答案 1 :(得分:3)
这是标准的TCP错误
WSAECONNREFUSED - 10061
从客户的角度来看,这意味着该地址没有套接字听取该端口' ("积极拒绝"是红鲱鱼)。
i)检查地址 ii)检查端口 iii)检查防火墙
答案 2 :(得分:1)
根据我们丰富的经验(我们提供自己的网络组件) - 它是一个防火墙问题。防火墙不会让您的请求通过。这是一个常见的情况,当你运行说Putty,它的工作原理,但你的代码没有。这是因为许多防火墙检测到众所周知的应用程序并让它们通过,同时阻止其他应用程序。