Docker容器内的Git权限被拒绝

4

我在Jenkinsfile中使用一个shell脚本来运行数据库迁移。该脚本在设置known_hosts文件条目后尝试克隆存储库。我正在执行以下操作:

    #!/bin/bash

    set -e

    # Workaround old docker images with incorrect $HOME
    # check https://github.com/docker/docker/issues/2968 for details
    if [ "${HOME}" = "/" ]
    then
      export HOME=$(getent passwd $(id -un) | cut -d: -f6)
    fi

    mkdir -p ~/.ssh

    echo '
    github.com ssh-rsa KEY
  ' >> ~/.ssh/known_hosts

    git clone git@github.com:Organization/migrations.git /tmp/database-migrations

   Execute Migration

这个让我遇到了一个错误,错误信息为

Permission denied (publickey).
fatal: Could not read from remote repository.

如何解决这个问题?

顺便提一下,当我检查已知主机文件时,我发现已添加一个IP为192范围(本地IP)的条目到该文件中。这是否会引起问题?

2个回答

5

这个问题不是因为known_hosts文件。正如它所说,我认为这是你的私钥的问题。

你是否将正确的私钥复制到了容器中?因为我在你的脚本中没有看到它。

你可以通过输入以下命令来测试你的密钥:

ssh -T git@github.com

我相信您会看到相同的结果。您可以在Github上检查此链接 Error: Permission denied (publickey)

5
那么,如何解决容器的问题? - Muhammad Yasirroni

1

看起来你只需要使用SSH来克隆对吧?为什么不使用HTTPS URL来克隆存储库,这对我来说很有效。我认为,当只是克隆一个repo时,使用带有访问令牌的HTTPS更简单且更安全。添加SSH可能会使容器变得更大并潜在减慢速度请查看此问题

你可以使用以下内容代替:

git clone https://{{YOUR_USER_NAME}}:{{YOUR_ACCESS_TOKEN}}@gitlab.com/{{REPO_URL}}.git

关于在容器中使用SSH是否是一个好的实践,也存在争议。 Hacker News: Docker Container Shouldn't Run SSH Server


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接