Как использовать соединение SFTP с использованием C# и. Net (с файлом ключа) - PullRequest
1 голос
/ 17 января 2020

У меня есть проект C#. Net, где я пытаюсь открыть SFTP-соединение с сервером и поместить файл на сервер.

У меня есть SFTP имя хоста , имя пользователя и файл ключа (.pem файл).
У меня нет пароль здесь.

Пожалуйста, помогите мне с чем-нибудь использовать SFTP в C# и. Net.

1 Ответ

2 голосов
/ 17 января 2020

Возможно, каждая библиотека SFTP / S SH поддерживает проверку подлинности с помощью ключа c.

Например:

  • S SH. NET ( пакет NuGet ):

    var privateKey = new PrivateKeyFile(@"C:\some\path\key.pem");
    var client = new SftpClient("example.com", "username", new[] { privateKey });
    client.Connect();
    
  • WinSCP. NET сборка ( пакет NuGet ):

    SessionOptions sessionOptions = new SessionOptions
    {
        Protocol = Protocol.Sftp,
        HostName = "example.com",
        UserName = "username",
        SshHostKeyFingerprint = "ssh-rsa 2048 ...=",
        SshPrivateKeyPath = @"C:\some\path\key.ppk",
    };
    
    using (Session session = new Session())
    {
        session.Open(sessionOptions);
    
        // Your code
    }
    

    Ключу WinSCP требуется преобразовать ключ в формат PPK (для этого можно использовать WinSCP GUI или PuTTYgen). Также обратите внимание, что WinSCP проверяет ключ хоста S SH (SshHostKeyFingerprint). S SH. NET по умолчанию не может этого сделать, что является недостатком безопасности.

    (я являюсь автором библиотеки)

...