會話部分與私鑰的連接沒有問題。但是,當我做一個git克隆,它會給出錯誤'驗證失敗'。如何包裝,綁定或使連接的會話與git克隆一起工作。我在.NET 4.0下使用NGIT,但不認爲這很重要,因爲JGIT幾乎是一樣的。NGIT/JGIT/Git#使用私鑰的SSH會話克隆GiT存儲庫
任何想法?這裏
感謝加文
JSch jsch = new JSch();
Session session = jsch.GetSession(gUser, gHost, 22);
jsch.AddIdentity(PrivateKeyFile); // If I leave this line out, the session fails to Auth. therefore it works.
Hashtable table = new Hashtable();
table["StrictHostKeyChecking"] = "no"; // this works
session.SetConfig(table);
session.Connect(); // the session connects.
URIish u = new URIish();
u.SetPort(22);
u.SetHost(gHost);
u.SetUser(gUser);
NGit.Transport.JschSession jschSession = new JschSession(session,u);
if (session.IsConnected())
{
try
{
CloneCommand clone = Git.CloneRepository()
.SetURI(gitAddress)
.SetDirectory(folderToSave);
clone.Call();
// MessageBox.Show(Status, gitAddress, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
// AUth Fail..... ????
}
}
else
{
session.Disconnect();
}
session.Disconnect();
我在憑證提供程序中添加以查看它是否有幫助。 ()) CloneCommand clone = Git.CloneRepository() .SetCredentialsProvider(new CustomCredentialsProvider()) .SetURI(gitAddress) .SetDirectory(folderToSave); clone.Call(); – Gavin 2013-04-29 08:12:38
您使用的是哪個版本的NGit?我注意到的一件事是,從NuGet獲得的NGit相當老舊(2011年),因此可能會在修復此問題的錯誤修復方面落後。就我而言,我根本無法連接,但隨後將我的NGit版本更新爲[最新來自github](https://github.com/mono/ngit)。 – 2013-11-30 07:38:03