5

我正在尝试使用 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)

4

2 回答 2

3

您应该使用没有密码或选美的私钥,因为 WinSCP C# 类不支持为私钥设置密码。

于 2012-12-21T10:06:06.883 回答
1

最新版本的 WinSCP .NET 程序集确实支持将密码设置为加密的私钥。

使用SessionOptions.PrivateKeyPassphrase.

SessionOptions sessionOptions = new SessionOptions
{
    ...
    SshPrivateKeyPath = "\\PrivateKey\\PrivateKey.ppk",
    SshPrivateKeyPassphrase = "passphrase",
};

另请参阅WinSCP 常见问题解答中的自动化私钥身份验证

于 2016-02-10T17:39:17.523 回答