哪种格式应该是LibGit2的SSH私钥LibGit2Sharp(+ SSH)

时间:2017-11-23 21:01:37

标签: .net git ssh libgit2 libgit2sharp-ssh

我遇到了SSH私钥问题和LibGit2Sharp-Ssh。

我有一个.Net / C#应用程序,它使用LibGit2Sharp-Ssh来克隆Git存储库。

我需要使用SSH(https,用户/密码不是一个选项)我也有一个有效的密钥,它已经在工作,例如与Teamcity。

我的代码如下所示:

CloneOptions options = new CloneOptions
{
     Checkout = false,
     CredentialsProvider = (url, user, cred) => new SshUserKeyCredentials()
     {
          PrivateKey = privateKey,
          Passphrase = passphrase,
          PublicKey = publicKey,
          Username = "git"
     }
};
var clone = LibGit2Sharp.Repository.Clone(remoteUrl, localPath, options);

privateKey指向“OpenSSH”格式的私钥文件。

执行Clone时,我得到:

LibGit2Sharp.LibGit2SharpException: "Failed to authenticate SSH session: Invalid key data, not base64 encoded"

我已尝试使用PuttyGen创建的所有私钥格式,但我总能得到相同的结果。

创建私钥文件可能是什么问题或格式是什么?

我的OpenSSH格式键看起来像(截断的):

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,27A4E70608469318

<Key-Data, like "sdhsdcQEHBg3uzfb...">
-----END RSA PRIVATE KEY-----

3 个答案:

答案 0 :(得分:3)

  

privateKey指向“OpenSSH”格式的私钥文件。

privateKey需要指向,而不是指向键的路径。您需要阅读密钥文件并将内容放入string,然后传递给privateKey

答案 1 :(得分:1)

使用PuttyGen加载所述ppk文件,并将其另存为OpenSSH文件(ppkid_rsa,而不是使用PuttyGen(id_rsa.pub键)创建私钥。 )

或者,正如我在此处所述,使用Git for Windows PATH访问ssh-keygen,并使用正确的格式直接创建一个:

ssh-keygen -t rsa -C "key for my Git repo server" -q -P ""

答案 2 :(得分:-1)

这就是我的OpenSSH-Key的样子(关键数据被截断):

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,27A4E70608469318

<Key-Data, like "sdhsdcQEHBg3uzfb...">
-----END RSA PRIVATE KEY-----

有什么方法可以验证导出的密钥吗?