在C#上使用SSH进行NGit(JGit端口)身份验证

时间:2017-07-12 14:38:37

标签: c# git ssh jgit ngit

我正在使用NGit在我的应用程序中设置Git功能。存储库是BitBucket上经过SSH身份验证的存储库,我无法对Push,Pull,Clone等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工具一起使用。

此时我不知道可能出现什么问题,我很欣赏任何正确方向的指示。

在Visual Studio 2017上使用C#和.Net 4.5.2

编辑1

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

1 个答案:

答案 0 :(得分:1)

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

mymtcars = head(mtcars)
for_pop_up = 1:6

app <- shinyApp(
  ui = fluidPage(

    DT::dataTableOutput("mydatatable")
  ),


  server =  shinyServer(function(input, output, session) {

    mycars = head(mtcars)
    output$mydatatable = DT::renderDataTable(mycars, selection = 'single',  
                                             rownames = FALSE, options = list(dom = 't'))

    observeEvent(input$mydatatable_rows_selected,
                 {
                   showModal(modalDialog(
                     title = "You have selected a row!",
                     mycars[input$mydatatable_rows_selected,]
                   ))
    })



  })
)