我目前正在研究一个小型的Visual C#应用程序
需要一个SSH库.
我已经尝试过DotNetSSH,Renci.SshNet和SharpSsh.
Granados SSH库文档很少(至少我发现几乎没有),
所以我跳过这个.
需要一个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格式.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。