解决Jenkins部署密钥与仓库不关联的问题

55次阅读
没有评论

问题描述

在使用Jenkins从Bitbucket仓库拉取代码时,遇到如下错误信息:

git@bitbucket.org:source/source.git +refs/heads/:refs/remotes/origin/" returned status code 128:stdout:stderr: repository access denied. deployment key is not associated with the requested repository.fatal: Could not read from remote repository.

用户已经在Bitbucket仓库中添加了SSH密钥,并且通过运行ssh -v git@bitbucket.org命令确认SSH连接正常。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

解决方案1

这个问题可能是由于密钥配置不正确或权限问题导致的。以下是解决该问题的步骤:

  1. 确保你已将公钥正确地添加到Bitbucket仓库,通常可以将公钥添加到“Access keys”中,以便用户具有只读权限。

  2. 确保你将私钥添加到你的系统中,以便你可以在使用Git时使用它。可以使用以下命令将私钥添加到SSH agent中:
    ssh-add private-key

  3. 确保你可以使用Git克隆你的仓库。在终端中运行以下命令来验证:
    git clone <your git repo>

  4. 如果以上步骤都正常工作,那么可以将这些凭据添加到Jenkins中,并在构建中使用它们。

解决方案2(最佳解决方案)

这个问题的另一种解决方法是从Jenkins服务器生成SSH密钥,并在代码中调用私钥。以下是具体步骤:

  1. 在Jenkins服务器上生成SSH密钥对,可以使用以下命令:
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

  2. 将生成的私钥放置在项目结构中,如下所示:
    root@staging:~/project/
    ├── deployment.yaml
    ├── server
    │ └── host
    └── the_private_key

  3. deployment.yaml文件中,使用生成的私钥进行部署,示例如下:
    “`yaml


hosts: staging
become_user: sudo
tasks:
– name: populate my project
git:
repo: git@bitbucket.org:source/source.git
version: master
dest: /var/www/test/
key_file: the_private_key
accept_hostkey: yes
“`

  1. 将Jenkins服务器的公钥复制到目标服务器中,以确保SSH连接正常。

通过以上步骤,你可以在Jenkins中使用生成的SSH密钥来拉取代码并部署。

请注意,根据你的实际情况,一些路径和配置可能需要进行适当的调整。

总结

通过确保正确添加密钥,验证SSH连接,以及使用正确的配置文件,你应该能够解决Jenkins部署密钥与Bitbucket仓库不关联的问题。在执行任何更改之前,请确保备份相关配置以避免不必要的风险。

正文完