Hudson不会从Git中获取

时间:2011-01-21 15:03:56

标签: git authentication ssh hudson

我一直在打这一天超过一天,这让我很生气!

  • 我在Win7 PC上安装了Git, 并选择了PuttyGen选项 安装。
  • 我已经生成了ssh密钥 使用PuttyGen;我添加了ssh 我的Git帐户的关键,并链接了 Pageant中的私钥。
  • 我已经成立了 GIT_SSH指向我的腻子 plink.exe。
  • 我用Putty连接 to codaset& git让他们接受 作为已知的主人。

我可以从控制台克隆,但是哈德森失败了:

Fetching upstream changes from git@codaset.com:xxx/xxx.git
[workspace] $ "C:\Program Files\Git\bin\git.exe" fetch -t git@codaset.com:xxx/xxx.git +refs/heads/*:refs/remotes/origin/*
ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway
ERROR: Could not fetch from any repository
FATAL: Could not fetch from any repository
hudson.plugins.git.GitException: Could not fetch from any repository
    ...

如果我在控制台中运行确切的git命令,它可以正常工作:

"C:\Program Files\Git\bin\git.exe" fetch -t git@codaset.com:xxx/xxx.git +refs/heads/*:refs/remotes/origin/*

我尝试运行plink直接连接到GitHub:

plink -agent -v git@github.com
Looking up host "github.com"
...
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "git".
...
Authenticating with public key "rsa-key-20110121" from agent
...
Hi xxx! You've successfully authenticated, but GitHub does not provide
 shell access.

然后我尝试连接到codaset:

plink -agent -v git@codaset.co
m
Looking up host "codaset.com"
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "git".
...
Authenticating with public key "rsa-key-20110121" from agent
...
Opened channel for session
Server refused to allocate pty
Started a shell/command
Error: Command is required.
...
Server sent command exit status 255
Disconnected: All channels closed

因此,来自codaset的响应与来自git的响应略有不同。但是,我认为这可能是一个红色的鲱鱼,因为如果我尝试连接到哈德森的标准git项目,我会得到同样的错误。

我还设置了Go Server(CruiseControl),尝试从这里连接到git时出现类似的错误:

ERROR: FATAL ERROR: Disconnected: No supported authentication methods available
ERROR: fatal: The remote end hung up unexpectedly

这让我觉得问题必然在于身份验证,而不是哈德森的细节......?

与往常一样,任何帮助都非常感谢!

4 个答案:

答案 0 :(得分:2)

这可能是权限问题。 可以在同一台机器上进行git克隆,但我的猜测是你没有像运行Hudson的同一个用户那样做。 su给那个用户,然后再试一次。它可能会暴露这个问题。

答案 1 :(得分:0)

hudson是否可以在您可以成功获取的同一台机器上运行?如果没有,您可能还需要在 计算机上生成一个ssh密钥,并将其添加到您的github帐户。

无论哪种方式,第一个问题(除非我在你的问题中错过了它)是你运行哈德森的地方。

答案 2 :(得分:0)

经过长时间的战斗,我通过从控制台运行哈德森来解决这个问题,而不是作为服务...不理想,但在星期五的这个时候它已经足够了!

答案 3 :(得分:0)

当我通过Putty Plink.exe与我的被叫方交互时,我收到了SSH致命错误“服务器拒绝启动shell /命令”

我注意到问题是我的被叫方处于交互模式。例如,在我连接到被叫方后,我的被叫方要求我按任意键继续。按下Enter键并输入命令后,我需要输入“exit”,然后按“Enter”退出SSH连接。

为了让它与被叫方互动,我构建了如下命令:

注意:我在这里使用PowerShell代码作为示例。

$Commands= @" 

    show status 
    exit 
    exit
"@

请注意,上面参数中的每个换行符代表“Enter”键。 然后,我将Commands参数传递给plink.exe,如下所示:

$output = $Commands |.\Putty\plink.exe -auto_store_key_in_cache -l $UserName -pw $Password $CalledPartyIP -v 2>&1

它会将一个命令列表传递给plink,并将详细结果输出到$ output变量。

希望这有帮助!