gpt4 book ai didi

c# - 支持密码 rsa 私钥的 SSH 库

转载 作者:可可西里 更新时间:2023-11-01 14:25:36 29 4
gpt4 key购买 nike

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

所有这些库都有一个大问题(恕我直言):它们无法打开 SSH private带密码的 key 。

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

在没有密码的情况下使用用户名+密码和私钥连接效果很好使用 SharpSsh。

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

提前致谢

最佳答案

我已经成功使用了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 格式。

  1. 在puttygen中打开私钥
  2. 转到“转换”菜单并选择“导出 OpenSSH key ”。
  3. 将该新 key 保存到一个文件中并使用它。

关于c# - 支持密码 rsa 私钥的 SSH 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268829/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com