我正在尝试使用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)
您应该使用没有密码或选美大赛的私钥,因为winscp c#类不支持私钥设置密码。
WINSCP .NET组装的最新版本确实支持将密码设置为加密的私钥。
使用SessionOptions.PrivateKeyPassphrase
。
SessionOptions sessionOptions = new SessionOptions
{
...
SshPrivateKeyPath = "\PrivateKey\PrivateKey.ppk",
SshPrivateKeyPassphrase = "passphrase",
};
另请参见WINSCP常见问题中的自动化私钥身份验证。