【问题标题】:NGit (JGit port) authentication with SSH on C#在 C# 上使用 SSH 进行 NGit(JGit 端口)身份验证
【发布时间】:2017-07-18 02:56:46
【问题描述】:

我很想用 Ngit 在我的应用程序中设置 Git 功能。该存储库是 BitBucket 上经过 SSH 身份验证的存储库,我无法对推送、拉取、克隆等 Git 功能进行身份验证。

我的代码如下:

JschConfigSessionFactory:

public class NSessionFactory : JschConfigSessionFactory
{
    protected override void Configure(OpenSshConfig.Host hc, Session session)
    {
        session.SetConfig("StrictHostKeyChecking", "no");
    }

    protected override JSch CreateDefaultJSch(FS fs)
    {
        JSch defaultJSch = new JSch();
        defaultJSch.SetKnownHosts(@"<path>\known_hosts");
        defaultJSch.AddIdentity(@"<path>\id_rsa");
        return defaultJSch;
    }
}

TransportConfigCallback:

public class NTransportConfigCallBack : TransportConfigCallback
{
    public void Configure(Transport transport)
    {
        SshTransport sshTransport = (SshTransport)transport;
        sshTransport.SetSshSessionFactory(new NSessionFactory());
    }
}

推送命令:

Git gitObj = NGit.Api.Git.Open(<path to git repo>);

PushCommand pshCmd = gitObj.Push();
pshCmd.SetRemote("ssh://git@stash.name.com:xxxx/repo.git");
pshCmd.SetTransportConfigCallback(new NTransportConfigCallBack());
pshCmd.Call();

PushCommand.Call() 出现以下异常:

"TransportException: ssh://git@stash.name.com:xxxx/repo.git: Auth fail"

BitBucket 帐户已经设置了 SSH 密钥,并且一切都可以与其他 GIT 工具一起使用。

在这一点上,我不知道可能出了什么问题,如果有任何正确方向的指点,我将不胜感激。

在带有 .Net 4.5.2 的 Visual Studio 2017 上使用 C#

编辑 1

按照答案here 更改代码会产生相同的异常。

【问题讨论】:

  • 您的远程 URL 的格式是否正确?对于公共 BitBucket 存储库,它似乎是ssh://git@bitbucket.org/&lt;username&gt;/repo.git。您可以使用 CLI Git 连接到存储库吗?
  • URL 是正确的,我已经使用它来克隆存储库。请参阅此处:imgur.com/a/JhW02 我在我的代码中使用相同的 url。真的不认为这是问题:(
  • 您的 ssh 密钥似乎需要密码,在这种情况下,请使用 defaultJsch.addIdentity( "&lt;path&gt;", "&lt;passphrase&gt;" )
  • 啊,原来如此!感谢吕迪格的提示!

标签: c# git ssh jgit ngit


【解决方案1】:

您的 SSH 密钥似乎需要密码,在这种情况下,请使用

defaultJsch.AddIdentity( "<path>", "<passphrase>" )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多