微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 支持密码短语rsa privatekeys的SSH库

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

所有这些库都有一个巨大的问题(恕我直言):他们无法打开SSH私有
密码的密钥.

Renci.SshNet不支持AES.
DotNetSSH和SharpSsh使用jsch(java ssh库)作为基础,似乎有一个
bug(?)所以它不会解密私钥并不断要求密码.

使用用户名密码和没有密码短语的私钥连接效果很好
与SharpSsh.

有人已经有同样的问题吗?
或者是否有另一个C#SSH库与“RSA私钥和密码支持

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格式.如果在记事本中打开密钥文件,则必须在第一行显示“BEGIN RSA PRIVATE KEY”.

如果没有,则使用puttygen将私钥文件转换为OpenSSH格式.

>在puttygen中打开私钥>转到“转化”菜单,然后选择“导出OpenSSH密钥”.>将新密钥保存到文件并使用它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐