【问题标题】:How to use SFTP connection with key file using C# and .NET如何使用 C# 和 .NET 将 SFTP 连接与密钥文件一起使用
【发布时间】:2020-01-17 04:52:56
【问题描述】:

我有一个 C# .NET 项目,正在尝试打开与服务器的 SFTP 连接并将文件放入服务器。

我有 SFTP 主机名用户名密钥文件(.pem 文件)。
我这里没有密码

请帮助我在 C# 和 .Net 中使用 SFTP。

【问题讨论】:

标签: c# .net sftp ssh-keys pem


【解决方案1】:

可能每个 SFTP/SSH 库都支持公钥身份验证。

例如:

  • SSH.NET(NuGet package):

    var privateKey = new PrivateKeyFile(@"C:\some\path\key.pem");
    var client = new SftpClient("example.com", "username", new[] { privateKey });
    client.Connect();
    

    如果私钥被加密:

    var privateKey = new PrivateKeyFile(@"C:\some\path\key.pem", "passphrase");
    
  • WinSCP .NET assembly(NuGet package):

    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 会验证 SSH 主机密钥 (SshHostKeyFingerprint)。 SSH.NET 在默认情况下无法做到这一点,这是一个安全漏洞。

    如果私钥是加密的,添加PrivateKeyPassphraseSecurePrivateKeyPassphrase

    WinSCP GUI 可以generate a code template for you

    (我是图书馆的作者)

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。 Martin 提供的代码当然对我有帮助,但是它缺少一些满足我需要的设置。

    我需要添加一个端口号和一个密码短语来完全自动化我的解决方案。所以代码最终如下:

            SessionOptions sessionOptions = new SessionOptions
                {
                    Protocol = Protocol.Sftp,
                    PortNumber = port,
                    HostName = host,
                    UserName = username,
                    PrivateKeyPassphrase = passphrase,
                    SshHostKeyFingerprint = fingerprint,
                    SshPrivateKeyPath = privatekeyfile
                };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 2022-06-15
      • 2016-11-23
      • 2018-02-22
      • 2014-10-13
      相关资源
      最近更新 更多