SSH库,支持密码rsa私钥



我目前正在开发一个小型Visual C#应用程序需要SSH库。我已经尝试过DotNetSSH、Renci.SshNet和SharpSsh。Granados SSH库的文档很差(至少我几乎什么都没发现),所以我跳过了这个。

所有这些库都有一个巨大的问题(IMHO):它们无法打开SSH私有带有密码短语的密钥。

Renci.SshNet不支持AES。DotNetSSH和SharpSsh使用jsch(javassh库)作为基础,并且似乎有bug(?),所以它不会解密私钥,并不断询问密码短语。

使用用户名+密码和不带密码的私钥进行连接非常有效使用SharpSsh。

有人已经有同样的问题了吗?或者还有其他支持"RSA私钥和密码短语"的C#SSH库吗?

Thx提前

我已经成功地使用了SSH.NET开源库来处理SSH和SFTP。

这是使用密钥文件+密码短语进行连接的代码

    public void Connect(string host, int port, string user, string passPhrase, string privateKeyFilePath) {
        var keyFiles = new[] { new PrivateKeyFile(privateKeyFilePath, passPhrase) };
        var methods = new List<AuthenticationMethod>();
        methods.Add(new PasswordAuthenticationMethod(user, passPhrase));
        methods.Add(new PrivateKeyAuthenticationMethod(user, keyFiles));
        var con = new ConnectionInfo(host, port, user, methods.ToArray());
        var client = new SshClient(con);
        client.Connect();
        // create an xterm shell
        var Shell = client.CreateShellStream("xterm", 80, 24, 800, 600, 1024);
        // for reading & writing to the shell
        var reader = new StreamReader(Shell);
        var writer = new StreamWriter(Shell);
        // ....
        client.Disconnect();
    }

私钥文件格式

请注意,您的私钥文件必须是OpenSSH格式。如果在Notepad++中打开密钥文件,则第一行必须有"BEGIN RSA PRIVATE key"。

如果没有,那么使用puttygen将您的私钥文件转换为OpenSSH格式。

  1. 在puttygen打开私钥
  2. 转到"转换"菜单,然后选择"导出OpenSSH密钥"
  3. 将新密钥保存到文件中并使用它

也许Chilkat SSH组件可以帮助您。

但它不是免费的。

我们的SecureBlacbox以所有常见格式加载和保存SSH密钥,并支持加密密钥文件。不确定是否有其他图书馆这样做。

最新更新