2015-10-19 72 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地址插座使用。

相關問題