我正在用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"
在这一点上,我不知道会出什么问题,我希望有人能给我指出正确的方向。
编辑1
更改答案中的代码
here
产生相同的异常。