SFTP连接未关闭(Renci& C#)

时间:2016-06-28 14:30:00

标签: c# connection sftp

我正在测试SFTP与第三方的连接,我们正在使用C#和Renci来执行此操作。

但这些联系似乎并未结束。这是我简单的测试代码:

public bool TestConnection()
{
    using (var client = new SftpClient(_connectionInfo))
    {
        try
        {
            client.Connect();

            if (!client.IsConnected)
                return false;
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            return false;
        }
        finally
        {                                        
            client.Disconnect();              
            client.Dispose();                    
        }

        return true;
    }
}

严格来说,断开和处置是多余的。

Wireshark显示从我们到主机的每个测试的最后一个命令是

  

59916→22 [RST,ACK] Seq = 2319 Ack = 1941 Win = 0 Len = 0

对我来说,表明连接应该关闭。然而,经过大约19次连续测试后,主机开始强行关闭连接尝试,直到原始连接开始超时。 主机是否忽略RST,是否像防火墙一样阻止了断开连接?怎么回事?

1 个答案:

答案 0 :(得分:0)

最后我们找到了原因。它与我们的代码无关。

其中一个内部防火墙有一个入侵防御规则,基本上是为了防止DoS攻击。

我们通过测试我们自己的SFTP服务器发现了这一点。服务器日志表示客户端正在关闭连接。客户端说服务器正在关闭连接,所以我们假设介于两者之间的东西是罪魁祸首。