【问题标题】:Jenkins is not able to connect to GIT with SSH, but shell worksJenkins 无法使用 SSH 连接到 GIT,但 shell 可以工作
【发布时间】:2013-10-17 03:53:08
【问题描述】:

我有 2 台虚拟机(都是 Ubuntu 12),SRV-ATLASSIAN(安装了 Stash)和 SRV-CI(安装了 Jenkins)。

我想为 Jenkins 使用 Git 插件,所以我安装了它,在 SRV-ATLASSIAN 上创建了一个 SSH 密钥并将私钥 (id_rsa) 复制到 /var/lib/jenkins/.ssh

我 ssh-添加密钥

当我输入时

sudo su jenkins
cd /var/lib/jenkins/.ssh
git clone ssh://git@10.10.10.21:7999/test/test.git

在外壳上,它确实可以完美运行。

当我将此 URI 输入到 jenkins 的 GIT 插件中时,我收到以下错误消息:

Using strategy: Default
Fetching changes from 1 remote Git repository
Fetching upstream changes from origin
ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway
hudson.plugins.git.GitException: Command "git fetch -t origin     +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly

我当然已经在谷歌上搜索过这个问题,但我不明白究竟该怎么做才能让它工作。奇怪的是,我可以从 shell 克隆为用户“詹金斯”,但詹金斯本身不能..

【问题讨论】:

    标签: git ssh jenkins


    【解决方案1】:

    您需要授予 Jenkins 用户访问您的 Stash 存储库的权限。在 Stash 中创建一个用户,并将 Jenkins 用户的 SSH 公钥添加到 Stash 用户。然后为您的 Stash 项目或单个存储库设置权限,以便 Jenkins 用户可以访问您需要的存储库。有关详细信息,请参阅the Stash docs

    【讨论】:

    • 我做到了。我创建了一个名为“jenkins”的用户。此用户具有存储库的权限 (READ)。我在存储实例上创建了一个用户“jenkins”并创建了一个新的 ssh 密钥,将私钥复制到了 jenkins 实例。再次,在 shell 上克隆工作,再次得到同样的错误。
    • 您需要将Jenkins服务器上Jenkins用户的SSH公钥添加到Stash中的Jenkins用户。作为管理员,请转到 stash/admin/users/view?name=jenkins 并单击 SSH 密钥选项卡。
    • 我删除了所有密钥,进入 jenkins 实例,创建 SSH 密钥,将公钥添加到 jenkins 用户的存储中。重新启动詹金斯。仍然出现同样的错误。
    • 也许这有助于找到错误,当我输入“sudo su jenkins”并且我想“ssh-add -l”时,输出是:“代理没有身份。”。我必须一直“eval ssh-agent -s”才能从 shell 克隆。
    猜你喜欢
    • 2019-08-01
    • 2023-02-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2018-06-04
    相关资源
    最近更新 更多