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

本文关键字:Renci 连接 SFTP | 更新日期: 2023-09-27 17:52:18

我正在测试与第三方的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,还是某种类似防火墙的东西以某种方式阻止了断开连接?发生什么事了?

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

我们终于找到了原因。这和我们的代码没有任何关系。

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

我们通过对我们自己的SFTP服务器进行测试发现了这个问题。服务器日志显示客户端正在关闭连接。客户端说服务器正在关闭连接,所以我们假设两者之间的东西是罪魁祸首。