5

我有点卡在 SSH 私钥问题和 LibGit2Sharp-Ssh 上。

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

我需要使用 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-----
4

3 回答 3

4

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

privateKey需要指向一个,而不是一个键的路径。您需要读取密钥文件并将内容放入string您可以传递给privateKey.

于 2017-11-24T21:44:45.873 回答
1

不要使用 PuttyGen ( 密钥) 创建您的私钥,而是ppk使用 PuttyGen 加载所述ppk文件,并将其保存为 OpenSSH 文件 ( id_rsa, id_rsa.pub)

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

ssh-keygen -t rsa -C "key for my Git repo server" -q -P ""
于 2017-11-23T22:30:09.237 回答
-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-----

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

于 2017-11-24T07:13:47.273 回答