【问题标题】:Hudson won't fetch from GitHudson 不会从 Git 获取
【发布时间】:2011-06-13 05:11:12
【问题描述】:

我已经打了一天多,这让我发疯了!

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

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

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 的响应略有不同。但是,我认为这可能是一个红鲱鱼,因为如果我尝试从 hudson 连接到标准 git 项目,我会遇到同样的错误。

我还设置了 Go Server(CruiseControl 原样),并在尝试从此处连接到 git 时遇到类似错误:

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

这让我觉得问题一定出在身份验证上,而不是 hudson 详细信息...?

一如既往,非常感谢任何帮助!

【问题讨论】:

    标签: git authentication ssh hudson


    【解决方案1】:

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

    无论哪种方式,第一个问题(除非我在您的问题中遗漏了它)是您让 hudson 跑步的地方。

    【讨论】:

    • 感谢您的回复。我可以从运行 Hudson 的同一台机器上成功获取/克隆。 (事实上​​,我什至尝试手动克隆到我的 hudson 工作区,看看我是否可以帮助解决问题。它没有工作......)
    【解决方案2】:

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

    【讨论】:

    • ssh 密钥往往是用户特定的。如果您将它作为服务运行,它很可能在不同的用户帐户下运行(因此会导致您的权限问题)。
    【解决方案3】:

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

    【讨论】:

    • 很好,这是有道理的,因为如果我从控制台运行 hudson,但如果我将 hudson 作为服务运行,它就不行。干杯!
    【解决方案4】:

    当我通过 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 变量。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 2011-03-12
      • 2011-03-26
      • 1970-01-01
      • 2015-10-27
      • 2018-12-03
      • 2012-04-15
      相关资源
      最近更新 更多