任何有使用C#和RSA密钥连接SFTP的经验的人,我都会非常感谢他们的专家。
我已经有了一些使用RSA密钥连接到SFTP的C#程序,并且在这种情况下已经成功与FileZilla连接,所以我不确定到底是什么无法正常工作。
我有'PublicKey.key'和'PrivateKey.ppk',当我使用Filezilla上的私钥进行连接时,它可以正常工作/打开。
以下代码来自另一个连接(不同的密钥集,但工作正常):
<add key="keyDIR" value="C:\Users\Administrator\Dropbox\NET\test2d.ppk" />
using Renci.SshNet;
SftpClient xclient = null;
string sPrivateKeyPath = ConfigurationManager.AppSettings["keyDIR"];
PrivateKeyFile ObjPrivateKey = null;
PrivateKeyAuthenticationMethod ObjPrivateKeyAutentication = null;
using (Stream stream = File.OpenRead(sPrivateKeyPath))
{
if (ConfigurationManager.AppSettings["PassPhraseCode"] != null)
{
string sPassPhrase = ConfigurationManager.AppSettings["PassPhraseCode"];
ObjPrivateKey = new PrivateKeyFile(stream, sPassPhrase);
ObjPrivateKeyAutentication = new PrivateKeyAuthenticationMethod(pub.JBuser, ObjPrivateKey);
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + " '" + stream.ToString() + "'");
这是代码中断的“新PrivateKeyFile”行。我收到的错误是“应用程序处于中断模式”。您的应用已进入中断状态,但由于所有线程都在执行外部代码(通常是系统代码或框架代码),因此没有任何代码可显示。”
我已使用Console.WriteLine ..检查目录/密码,并确信它会定向到正确的位置。
我可能仅想到的与关键规范有关?不幸的是,我不记得我在创建它时选择的规范(几个月前)。密钥是使用PuTTy创建的。
解决方案: 这与以下事实有关:我的密钥“ .ppk”的文件类型不能与SSH.NET一起使用。以下是用于将其转换的: