尽pipe存在SSH证书,Git克隆仍然不能在Docker内部工作
我试图克隆一个存储库到一台机器的图像,我成功地能够使用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/*
我已经validation传入的参数是通过使用回声debugging使其与本地计算机上的这些字段具有相同的值。 此外,运行git clone ssh://git@bitbucket.example.com/my-repo.git
在机器上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'
获得所有的环境variables
事实certificate,有一个与我的密钥对相关的密码。 它不会问我在docker集装箱外的密码,但会在docker集装箱内。 原因是我的ssh-key
已经被解锁,并且通过我的发行版(通过ssh-add -l
可以看到),通过ssh-add -l
加载到ssh-agent
。
如果ssh-add -l
没有find任何结果,那么仍然有可能存在与密钥相关的密码。 这是我的情况。 确保最好的方法是检查rsa_id private key
文件(详情如下)。
在编译期间,由于没有提供密码,它只是立即失败的GIT拉,但没有提供详细的错误信息。 一旦我生成一个没有关联密码的id_rsa keypair
,并使用它,我能克隆到docker构build。
要检查密码保护是否是问题,您可以比较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-----
虽然那些不受保护的缺less包含Proc-Type:4,ENCRYPTED等的二至四行的行
-----BEGIN RSA PRIVATE KEY----- MIIEogIBAAK /* lots of letters and numbers */ -----END RSA PRIVATE KEY-----
- DOCKER用于设置BitBucket
- 使用Bitbucket泊坞窗图像
- Docker Hub – 自动构build链接到Bitbucket
- Jenkins在RaspberryPi 3(rpi-jenkins)的Docker中连接问题,当克隆一个Bitbucket Git Repo
- Bitbucketpipe道耙testing需要20分钟
- Docker Bitbucket。 git克隆从回购。 权限被拒绝(公钥)
- BitBucketpipe道 – docker未经授权:需要authentication – Docker推送成功login
- 处理docker和Jenkins中的大型二进制文件(3 GB)
- pipe道失败,自定义泊坞窗图像