我正在尝试使用C#中的WinSCP连接到SFTP服务器。这是我的代码:
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = "ip",
PortNumber = portNR,
UserName = "username",
Password = "",
SshHostKeyFingerprint = "fingerPrint",
SshPrivateKeyPath = "\\PrivateKey\\PrivateKey.ppk ",
};
using (Session session = new Session())
{
session.Open(sessionOptions);
}
但是当我运行应用程序时,就像
那样session.Open(sessionOptions);
我收到此错误:
已断开连接:没有可用的支持身份验证方法(服务器已发送:publickey,gssapi-with-mic)
答案 0 :(得分:3)
您应该使用没有密码或选美的私钥,因为WinSCP C#类不支持为私钥设置密码。
答案 1 :(得分:1)
最新版本的WinSCP .NET程序集支持将密码短语设置为加密的私钥。
使用SessionOptions.PrivateKeyPassphrase
。
SessionOptions sessionOptions = new SessionOptions
{
...
SshPrivateKeyPath = "\\PrivateKey\\PrivateKey.ppk",
SshPrivateKeyPassphrase = "passphrase",
};
另请参阅WinSCP常见问题解答中的Automating private key authentication。