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,还是某种类似防火墙的东西以某种方式阻止了断开连接?发生什么事了?
我们终于找到了原因。这和我们的代码没有任何关系。
一个内部防火墙有一个入侵防御规则,基本上是为了防止DoS攻击。
我们通过对我们自己的SFTP服务器进行测试发现了这个问题。服务器日志显示客户端正在关闭连接。客户端说服务器正在关闭连接,所以我们假设两者之间的东西是罪魁祸首。