2017-04-16 52 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这样的实现会有一打一毛钱,假设这里的人会知道如何处理这样的产品可能不太安全。

相关问题