我试图克隆一个回购,其中有子模块。主回购是克隆罚款,但当我做git子模块更新-init-递归
在dockerfile子模块抛出和错误。
fatal: clone of 'git@github.com:jkeys089/lua-resty-hmac.git' into submodule path '/tmp/third-party/lua-resty-hmac' failed
Failed to clone 'third-party/lua-resty-hmac'. Retry scheduled
Cloning into '/tmp/third-party/lua-resty-jwt'...
load pubkey "/root/.ssh/id_rsa": invalid format
Warning: Permanently added the RSA host key for IP address '140.82.118.3' to the list of known hosts.
Load key "/root/.ssh/id_rsa": invalid format
git@github.com: Permission denied (publickey).
在图像中我有这个
# authorise ssh host
RUN mkdir /root/.ssh/ \
&& chmod 700 /root/.ssh \
&& ssh-keyscan github.com > /root/.ssh/known_hosts
# add key and set permission
RUN echo "${SSH_PRIVATE_KEY}" >> /root/.ssh/id_rsa \
&& echo "$ssh_pub_key" > /root/.ssh/id_rsa.pub \
&& chmod 600 /root/.ssh/id_rsa.pub \
&& chmod 600 /root/.ssh/id_rsa
我无法控制子模块。我不确定是否可以从git@github.com
到https以获取子模块。
我甚至尝试使用GITHUB\u令牌
route
# start up git and clone
RUN git config --global url."https://${GITHUB_TOKEN}@github.com/".insteadOf "https://github.com/" \
&& git clone https://github.com/GluuFederation/gluu-gateway.git /tmp \
&& cd /tmp/ \
&& git submodule update --init --recursive
下面是构建命令的一部分。build--build-argGITHUB_TOKEN=${GITHUB_TOKEN}--build-argSSH_PRIVATE_KEY="$(cat~/. ssh/id_rsa)"--build-argssh_pub_key="$(cat~/. ssh/id_rsa.pub)"
请帮帮忙。这很令人沮丧(
不要使用echo"${SSH_PRIVATE_KEY}"
RUN echo "$ssh_prv_key" > /root/.ssh/id_rsa && chmod 600 /root/.ssh/id_rsa
这导致了
identity file/root/之类的错误。ssh/id\u rsa type-1格式无效
和读取密码短语:无法打开/dev/tty
。
正确的方法是使用
COPY id_rsa /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa
解决方案解释道:我的私钥格式错误——不是许多行,而是作为一行传递,你可能会有任何其他格式问题,比如开头或结尾被遗忘的“-”,或者行尾有问题,例如缺少的换行符格式或行尾的附加字母。
请参阅Dockerfile:clone repo with passwordless private key。错误:“authentication agent”或“read_passphrase:can't open/dev/tty”了解更多详细信息,其主要思想是在docker文件中向ssh代理添加私钥,这同样是Gitlab CI/docker的思想:ssh Add不断请求密码。
如果密钥是“无效格式”,请尝试用旧的PEM格式重新生成它。
ssh-keygen -m PEM -t rsa -P ""
请确保将公钥添加到GitHub帐户以进行正确的身份验证。
OP Shammir在评论中补充道:
我认为问题在于,在构建期间,没有任何东西从主机复制到docker映像。
在“docker build--build arg SSH_PRIVATE_KEY=“$(cat~/.SSH/id_rsa)”
返回空”中,Shammir使用dockito/vault
来管理私钥,但也将其配置为“addkeystagent”:如果私钥没有密码保护(如上面的命令所示),则不需要此功能
另一个可能的问题是,如果您使用Makefile来运行docker构建命令。在这种情况下,Makefile中的命令看起来像:
docker-build:
docker build --build-arg SSH_PRIVATE_KEY="$(shell cat ~/.ssh/id_rsa)"
Make
不幸地用空格替换了换行符(makeshell)
这意味着写入容器的ssh密钥具有不同的格式,从而产生上述错误。
我无法找到在Makefile命令中保留换行符的方法,所以我求助于复制命令的解决方法。ssh目录到docker构建上下文中,通过Dockerfile复制文件,然后删除它们。
我正在使用GitLab为我的django项目构建CI/CD。作为我部署阶段的一部分,我有 构建在ssh add ~/处崩溃。ssh/id\u rsa
我无法控制子模块。我不确定是否可以从更改为https来获取子模块。 我甚至尝试使用路由 下面是build命令的部分。
我有一个dockerfile: 但当我尝试用最新的docker版本构建它时,我得到了以下错误: 谁能告诉我,我应该如何修复这个dockerfile?谢谢!!
我使用PuTTY密钥生成器生成了一个4096位RSA-2密钥,其中包含一个密码短语。 我保存了. ppk和一个openSSL格式的公钥。油灰格式公钥不起作用。 无论如何,我的错误如下: 有什么问题吗? 我使用Pageant来加载密钥,我使用Git Bash来尝试ssh连接。我也把密钥加载到GitHub,不知道我做错了什么。 我尝试在GitHub中添加新行,但没有添加新行
有什么建议吗?我试图用puttygen转换我的钥匙,但仍然不起作用!我的pub密钥的开头是ssh rsa密钥。。私钥:--开始OPENSSH私钥--。。键--结束OPENSSH私钥--
我正在使用ionic开发一个android应用程序。我用一个新的密钥库错误地给我的应用程序签名。当我将应用程序上传到PlayStore时发现证书不相等时,我使用了与PlayStore中所需证书相同的备份keystore文件。 现在,如果我想用命令对我的。apk进行jarsign 我得到以下错误 我谷歌了很多,但我不确定是否有任何解决方案可以帮助我。我必须使用我的旧证书,不能使用一个新的,因为我不能