You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LibGit2Sharp v0.31.0中如何使用带密码的SSH密钥作为凭证?

在LibGit2Sharp v0.31.0中处理带密码的SSH私钥凭证

LibGit2Sharp v0.31.0通过libgit2的OpenSSH支持实现SSH功能,对应的SSH密钥凭证类是SshUserKeyCredentials——这就是你要找的、替代HTTPS场景下UsernamePasswordCredentials的SSH专用凭证类,专门用于处理带密码保护的私钥认证。

核心说明

  • 无需额外依赖系统OpenSSH客户端,LibGit2Sharp通过内置的libgit2实现完成SSH交互
  • SshUserKeyCredentials支持配置私钥路径、公钥路径,以及私钥的加密密码(Passphrase)

克隆仓库的代码示例

using LibGit2Sharp;

var cloneOptions = new CloneOptions
{
    CredentialsProvider = (url, usernameFromUrl, types) =>
    {
        return new SshUserKeyCredentials
        {
            Username = "git", // Git SSH服务通用用户名,部分服务可按需调整
            Passphrase = "your-private-key-passphrase", // 私钥的加密密码
            PrivateKeyPath = @"C:\Users\YourAccount\.ssh\id_rsa", // 本地私钥文件路径
            PublicKeyPath = @"C:\Users\YourAccount\.ssh\id_rsa.pub" // 公钥文件路径,部分场景可省略
        };
    }
};

// 执行克隆
Repository.Clone("git@github.com:your-username/your-repo.git", @"D:\local-repo-dir", cloneOptions);

已克隆仓库的拉取示例

using (var repo = new Repository(@"D:\local-repo-dir"))
{
    var pullOptions = new PullOptions
    {
        FetchOptions = new FetchOptions
        {
            CredentialsProvider = (url, usernameFromUrl, types) =>
            {
                return new SshUserKeyCredentials
                {
                    Username = "git",
                    Passphrase = "your-private-key-passphrase",
                    PrivateKeyPath = @"C:\Users\YourAccount\.ssh\id_rsa"
                };
            }
        }
    };

    var committer = new Signature("Your Name", "your.email@example.com", DateTimeOffset.Now);
    repo.Network.Pull(committer, pullOptions);
}

注意事项

  • 确保程序对私钥文件有读取权限
  • 若私钥未设置密码,Passphrase可设为null或空字符串
  • 部分Git服务(如GitHub)允许省略公钥路径,LibGit2Sharp会自动从私钥推导或查找对应公钥

内容的提问来源于stack exchange,提问作者BoomBoom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 06:32:36