Question

I'm trying to connect to a SFTP server using WinSCP in C#. This is my code:

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);
}

But when I run the application and it reaches this like

session.Open(sessionOptions);

I get this Error:

Disconnected: No supported authentication methods available (server sent: publickey,gssapi-with-mic)

Was it helpful?

Solution

You should use private key without password or pageant, since WinSCP C# classes don't support setting password for private key.

OTHER TIPS

The latest version of WinSCP .NET assembly does support setting passphrase to an encrypted private key.

Use the SessionOptions.PrivateKeyPassphrase.

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

See also Automating private key authentication in WinSCP FAQ.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top