2017-04-16 81 views
1

我在Visual Studio 2008和.NET Framework 3.5中有一個C#控制檯應用程序。使用SSH.NET以密鑰文件連接到SFTP(權限被拒絕(publickey))

爲了測試目的,我在本地機器上安裝了一個FTP服務器並對其進行配置。我已經下載並安裝了這個免費的小FTP服務器:freeFTPd。這很容易,需要我大約10分鐘。

配置完成後,我已經使用我的C#控制檯應用程序使用PasswordA u certification方法成功連接。

現在我試圖只使用基於密鑰的文件連接到我的本地FTP服務器。

所以我已經實現的代碼如下:

var keyFile = new PrivateKeyFile(@"C:\Program Files (x86)\freeFTPd\freeftpd.key"); 
var keyFiles = new[] { keyFile }; 


var methods = new List<AuthenticationMethod>(); 
methods.Add(new PrivateKeyAuthenticationMethod(username, keyFiles)); 

var con = new ConnectionInfo(host, port, username, methods.ToArray()); 
using (SftpClient client = new SftpClient(con)) 
{ 
    client.Connect(); 
    // Do some stuff below 
} 

正如你可以在上面的代碼中看到的,我使用freeftpd.key作爲私有密鑰文件。該文件在安裝freeFTPd後創建。在安裝過程中,freeFTPd要求我創建一個新的私鑰文件,所以我回答'是'。現在我正在使用它,但問題是我可以使用此私鑰文件連接到我的FTP本地服務器。我已經打開這個文件,並將其與以下行開頭:

----- BEGIN RSA私鑰-----

,結尾是:

----- END RSA PRIVATE KEY -----

下面有一堆加密數據。

我已經在某處讀過此文件必須以此行開頭。

無論如何我無法連接到我的FTP服務器。

從freeFTPd控制面板,在SFTP部分,我可以創建RSA和DSA密鑰(512,1024或2048位長度)。這些文件生成爲RSAKey.cfg和DSAKey.cfg,它們的內容類似於freeFTPd安裝過程中生成的私鑰文件'freeftpd.key'。如果我使用RSAKey.cfg或從freeFTPd創建的任何其他文件,則不起作用。出現的錯誤消息是:

Permission denied (publickey). 

所以我做錯了什麼?我不知道證書,私鑰文件...任何幫助將不勝感激。

回答

0

也許你做錯了什麼是在這裏問freeFTPd網站有forums專門針對你問的問題類型。在這些論壇之外,調試您使用的客戶端類型的最佳方法是首先針對受歡迎的,受到良好支持的服務器應用程序(如Linux上的SSHD)嘗試它,確保它在那裏工作,然後嘗試它與較小的已知產品進行對比,以查看行爲是否存在差異。像你引用的freeFTPd這樣的實現會有一打一毛錢,假設這裏的人會知道如何處理這樣的產品可能不太安全。

相關問題