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

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

Renci.SshNet不支持AES。
DotNetSSH和SharpSsh使用jsch(java ssh库)作为基础,似乎有一个
错误(?),因此它不会解密私钥,并不断询问密码。

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

有人已经遇到了同样的问题吗?
还是那里有另一个带有“RSA私钥和密码”支持的C#SSH库?

提前Thx

最佳答案

我已成功使用SSH.NET开源库与SSH和SFTP一起使用。

这是与 key 文件+密码连接的代码。

    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++中打开 key 文件,则第一行必须具有“BEGIN RSA PRIVATE KEY”。

如果不是,则使用puttygen将您的私钥文件转换为OpenSSH格式。
  • 在puttygen中打开私钥
  • 转到“转换”菜单,然后选择“导出OpenSSH key ”。
  • 将该新 key 保存到文件中并使用。
  • 关于c# - 支持密码短语rsa私钥的SSH库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12268829/

    10-13 05:51