2015-10-19 268 views
1

我们最近部署了一个项目进入生产环境,当我们尝试连接到外部sftp机器时,现在收到此错误消息:“无法建立连接因为目标机器积极拒绝它“。当我开发应用程序并进行测试时,我们没有连接到此服务器的问题。有人请向我解释什么会有所不同?是的,我拥有管理权限,生产服务器上的应用程序池没有。我不确定是否这可能是导致问题的原因,或者可能是外部客户端的服务器或防火墙阻止了我们。Renci ssh.net由于目标机器主动拒绝,无法建立连接

如果有人可以请向我解释这一点,并解释我如何解决这个问题,我将不胜感激。

在此先感谢

回答

3

这是一个标准的TCP错误

WSAECONNREFUSED - 10061

但从客户的角度来看它的意思是“没有在该地址监听端口没有插座”(以下简称“积极拒绝“是红鲱鱼)。

我)检查地址 二)检查端口 三)检查防火墙(S)

+0

谢谢你指出我们在正确的轨道上。我们的防火墙有点严格,我们的DMZ无法接收到sftp服务器的响应。 – Nathan

1

从我们丰富的经验(我们提供自己的网络组件) - 这是一个防火墙的问题。防火墙不会让您的请求通过。当您运行Putty时,这是一种常见的情况,并且它可行,但您的代码不会。这是因为许多防火墙检测众所周知的应用程序并让它们通过,同时阻止其他应用程序。

+0

的确,防火墙对我们的DMZ来说太严格了,它阻止了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#互动产生了以下内容:

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

价值::1似乎并没有一个有效的IP地址插座使用。

相关问题