2016-06-28 2 views
1

타사와의 SFTP 연결을 테스트하고 있습니다. C#과 Renci를 사용하여이 작업을 수행하고 있습니다.SFTP 연결이 닫히지 않습니다 (Renci & C#)

하지만 연결이 닫히지 않는 것 같습니다. 이것은 내 간단한 테스트 코드입니다.

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; 
    } 
} 

엄밀히 말하면 연결 끊기와 처리는 중복됩니다.

와이어 샤크 호스트 US에서 모든 테스트의 마지막 명령

59,916 → 22 RST, ACK 서열 = 2,319 긍정 = 1,941 승 = 0 렌 = 0

인 도시 나에게 어느 것이 연결이 닫혀 야한다는 것을 나타냅니다. 그러나 약 19 번의 연속적인 테스트가 끝나면 호스트는 원래 연결이 시간 초과되기 시작할 때까지 강제로 연결 시도를 닫습니다. 호스트가 RST를 무시합니까? 방화벽과 같은 방식으로 연결이 끊어지는 것을 막을 수 있습니까? 무슨 일이야?

+0

당신에게 좋은 힌트입니다. [using Statement documentation] (https://msdn.microsoft.com/en-us/library/yh598w02.aspx)을 살펴보면 클라이언트 자체가 처분됩니다. 직접 할 필요가 없습니다. –

+0

그래, 내가 아는 :) :) 그러므로 "엄격하게 말하면 연결 해제와 처분은 중복된다." – Schuits

+0

내 첫 번째 생각은 Disconnect가 Dispose로 중복된다는 것이 오해 일 수도 있습니다. –

답변

0

마지막으로 원인을 발견했습니다. 그것은 우리 코드와 관련이 없습니다.

내부 방화벽 중 하나에는 기본적으로 DoS 공격을 방지하기위한 침입 차단 규칙이 있습니다.

우리는 우리 자신의 SFTP 서버를 테스트하여이를 발견했습니다. 서버 로그에서 클라이언트가 연결을 종료하고 있다고 기록했습니다. 클라이언트는 서버가 연결을 닫고 있다고 말했기 때문에 우리는 그 중간에 무엇인가가 범인이라고 생각했습니다.

관련 문제