我在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).
所以我做错了什么?我不知道证书,私钥文件...任何帮助将不胜感激。