我一直在打这一天超过一天,这让我很生气!
我可以从控制台克隆,但是哈德森失败了:
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
这让我觉得问题必然在于身份验证,而不是哈德森的细节......?
与往常一样,任何帮助都非常感谢!
答案 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变量。
希望这有帮助!