标签: libgit2sharp-ssh

使用libgit2sharp-SSH中的SshUserKeyCredentials进行身份验证时遇到问题

使用libgit2sharp-SSH使用SshUserKeyCredentials进行身份验证时遇到一些问题:

var co = new CloneOptions();
co.CredentialsProvider = (_url, _user, _cred) => new SshUserKeyCredentials { PrivateKey="C:\\path\\to\\private_key" };
Repository.Clone("git@... .repository.git", path, co);
Run Code Online (Sandbox Code Playgroud)

我发现SshUserKeyCredentials对象浏览源代码,所以我的第一个问题是,是否可以使用此对象从gitlab部署基于密钥的签出?

该对象似乎需要PrivateKey,Username,PublicKey和Passphrase的任意组合.我目前正在使用PrivateKey.

我最终得到的错误:

{"Failed to start SSH session: Unable to exchange encryption keys"}
Run Code Online (Sandbox Code Playgroud)

如果这种方式不起作用,是否有另一种方法可以使用部署密钥以编程方式管理来自C#环境的git?

c# libssh2 libgit2sharp libgit2sharp-ssh

6
推荐指数
1
解决办法
1155
查看次数

哪种格式应该是LibGit2的SSH私钥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);
Run Code Online (Sandbox Code Playgroud)

privateKey 指向"OpenSSH"格式的私钥文件.

什么时候Clone执行我得到:

LibGit2Sharp.LibGit2SharpException: "Failed to authenticate SSH session: Invalid key data, not base64 encoded"
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

<Key-Data, like "sdhsdcQEHBg3uzfb...">
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

.net git ssh libgit2 libgit2sharp-ssh

5
推荐指数
1
解决办法
660
查看次数

标签 统计

libgit2sharp-ssh ×2

.net ×1

c# ×1

git ×1

libgit2 ×1

libgit2sharp ×1

libssh2 ×1

ssh ×1