gpt4 book ai didi

docker - 使用通过密码生成的 ssh key 从 docker 访问私有(private)仓库

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

我们在 bitbucket 中有一个私有(private)仓库,我们试图通过 npm 访问它,并且能够在本地执行 git clone 和 npm install 。但是当我们尝试在 docker 容器中做同样的事情时,它会抛出一个错误,说 'Host key verification failed'所以我们不得不添加known_hosts (这是让客户端对服务器进行身份验证的那个)解决了这个问题,然后它抛出了另一个错误,说 Permission denied (publickey)我们必须添加 id_rsaid_rsa.pub键,所以我们所做的是我们创建了一个文件夹(因为要访问 .ssh 文件夹,我们需要 sudo cmd,我们不想使用它)在具有所有三个键的机器中和使用 bash 脚本的 docker 文件中,我们试图获取这些 key 并复制到存储库并在运行 docker 时将其传递给 docker(完成后删除 ssh key ,因为我们不想将 key 保留在存储库中)容器,它仍然抛出错误说 Permission denied (publickey) .经过几个令人沮丧的小时后,我们发现它与 ssh 私钥(id_rsa)密码短语有关,我们在没有密码短语的情况下重新生成了 sshkey,最后我们能够毫无问题地运行应用程序。但我认为没有密码短语的 ssh key 是不安全的。现在我的问题是,是否有任何命令/黑客可以忽略密码提示(用于创建 ssh key id_rsaid_rsa.pub )?因为我想用密码创建我的 key ,但我希望 docker 忽略它并进入 bitbucket 安装我的私有(private)仓库。以下是我们遵循的步骤。

1. generate ssh keys using `ssh-keygen -t rsa -b 4096 -C 
"your_email@example.com"`
2. this will prompt for passphrase (optional)
3. if you provide passphrase it will create your sshkyes with encryption
4. else your key will be without encryption
5. create a folder in your local machine (e.g. keys)
6. Use bash script (create a bash file in your repo) to copy your
keys from local folder into a repository folder ( e.g sshkeys) as
shown below
if [[ -f "/keys/id_rsa" ]]; then
echo "keys exists!"
cp -r /keys/. sshkeys/
exit 0
fi

7. make sure you have git and ssh installed in your docker if not use
below command

apt-get install -y git ssh

8. And then in your docker file add the below code to copy sshkeys to
docker root/.ssh

RUN mkdir -p ~/.ssh
ADD sshkeys/. /root/.ssh/
RUN chmod 600 ~/.ssh/*
9. That's it, these steps are enough to install private repo and run it
in docker

问题:如何避免 docker 中的密码提示并安装 repo ?我已经尝试了 中建议的大部分选项。堆栈溢出 github 但似乎没有什么可以帮助我跳过 docker 中的密码提示。

最佳答案

您以后可以随时再次删除 key ...但是为什么不先从构建主机克隆存储库呢?

选项 1
使用脚本克隆或拉取您想要的文件到主机:

git clone ssh://git@myhost.com/myrepo.git

然后在你的 Dockerfile 中:
COPY myrepo /

选项 2
生成一个新 key 并将其分配给具有只读访问权限的用户,然后将此 key 复制到镜像中。在主机上:
ssh-keygen -f k1 -t rsa -b 2048 -P ''

然后在 Dockerfile
RUN mkdir /root/.ssh
COPY id_rsa* /root/.ssh/
RUN echo -e "Host: myhost.com\nStrictHostKeyChecking no" >> /etc/ssh/ssh_config
RUN git clone ssh://git@myhost.com/myrepo.git
RUN rm -rf /root/.ssh # remove the keys from the image

你当然也可以检查
man ssh_config


man ssh

对于更多选项,例如使用主机 key 而不是用户 key ,为 key 使用不同的路径和名称,或者在命令行上指定它们。


man ssh-keygen

当然。这说明在容器内部,对于一组通用兼容的键,你可以这样做:
ssh-keygen -A

关于docker - 使用通过密码生成的 ssh key 从 docker 访问私有(private)仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51050046/

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