我在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).
所以我做錯了什麼?我不知道證書,私鑰文件...任何幫助將不勝感激。