gpt4 book ai didi

尽管存在 SSH 凭据,但 Git 克隆无法在 Docker 构建中工作

转载 作者:行者123 更新时间:2023-12-02 20:09:07 25 4
gpt4 key购买 nike

我正在尝试将存储库从可以成功使用 SSH 克隆 Docker 构建之外的存储库的机器中克隆到镜像中。但是,每次我尝试克隆存储库时,我都会以以下借口被拒绝:

Cloning into 'my-repo'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

这是我的 Dockerfile:
FROM ubuntu as my-repo

ARG GIT_SSH_KEY
ARG GIT_SSH_PUBLIC_KEY
ARG KNOWN_HOSTS

RUN apt-get update
RUN apt-get install -y git ssh

# populate id_rsa files, populate known_hosts and config files, and manage permissions
RUN mkdir ~/.ssh/ && \
chmod 700 ~/.ssh && \
touch ~/.ssh/id_rsa && \
touch ~/.ssh/id_rsa.pub && \
chmod 600 ~/.ssh/id_rsa && \
chmod 600 ~/.ssh/id_rsa.pub && \
touch ~/.ssh/known_hosts && \
touch ~/.ssh/config && \
chmod 600 ~/.ssh/known_hosts && \
chmod 600 ~/.ssh/config && \
echo "${GIT_SSH_KEY}" > ~/.ssh/id_rsa && \
echo "${GIT_SSH_PUBLIC_KEY}" > ~/.ssh/id_rsa.pub && \
echo "${KNOWN_HOSTS}" > ~/.ssh/known_hosts && \
echo "Host bitbucket.example.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && \
git clone ssh://git@bitbucket.example.com/my-repo.git && \
rm ~/.ssh/*

我已经通过使用 echo 进行调试,验证了传入的参数与我本地机器上的那些字段的值相同。此外,运行 git clone ssh://git@bitbucket.example.com/my-repo.git在机器上工作正常。

我错过了什么导致权限被拒绝?它声明 publickey 是原因,但 id_rsa.pub已正确填充。

编辑:这是 docker 命令 docker build --build-arg GIT_SSH_KEY="$GIT_SSH_KEY" --build-arg GIT_SSH_PUBLIC_KEY="$GIT_SSH_PUBLIC_KEY" --build-arg KNOWN_HOSTS="$KNOWN_HOSTS" -f myRepoDockerfile -t myRepo .
我通过运行诸如 KNOWN_HOSTS='cat ~/.ssh/known_hosts'

最佳答案

事实证明,我的 key 对有一个密码。它不会要求我在 docker 容器之外输入密码,但会在 docker 容器内。原因是我的ssh-key已解锁并加载到 ssh-agentssh-add通过我的分布(我可以看到 ssh-add -l )。

如果 ssh-add -l没有出现任何结果,仍然可能存在与 key 关联的密码。我就是这种情况。确定的最好方法是检查 rsa_id private key文件(详情如下)。

在构建过程中,由于没有提供密码,它只是立即使 git pull 失败,但没有给出详细的错误消息。一旦我生成了 id_rsa keypair没有关联密码并使用它,我能够克隆到 docker 构建中。

要检查密码保护是否是问题,您可以比较 rsa_id private key文件,受密码保护的文件如下所示:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,2895AF2DB67AF43E94DF3C097C69B693

YUtMfSyL4xna /* lots of numbers and letters */
-----END RSA PRIVATE KEY-----

而那些不 protected 缺少包含 Proc-Type: 4,ENCRYPTED 等的第二到四行
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAK /* lots of letters and numbers */
-----END RSA PRIVATE KEY-----

关于尽管存在 SSH 凭据,但 Git 克隆无法在 Docker 构建中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47778302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com