我正在使用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
在答案here中更改代码会产生相同的异常。
答案 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,]
))
})
})
)