[英]ssh keys inside cloud build
我正在尝试创建一个将在容器中运行的服务,通过 ssh 连接到远程主机并远程执行多个命令。 该服务将在云构建中构建和运行。 现在我一直在尝试将 SSH 密钥注入容器 - 构建失败并出现错误:
Step #2 - "run replication command": Load key "/root/.ssh/id_rsa": invalid format
我的密钥是使用ssh-keygen
创建的,因此它们可能是正确的。 SSH 密钥似乎存在某种问题,但我不知道出了什么问题。 我已经尝试过的:
echo $(cat container_private_key.pem) | gcloud secrets create private-key --data-file=-
echo -n <secret value here> | gcloud secrets create private-key --data-file=-
gcloud secrets create private-key --data-file=container_private_key.pem
现在密钥注入如下:
mkdir -p /root/.ssh && chmod 0700 /root/.ssh && echo $CONTAINER_PRIVATE_KEY > /root/.ssh/id_rsa && \
echo $CONTAINER_PUBLIC_KEY > /root/.ssh/id_rsa.pub && chmod 400 /root/.ssh/id_rsa && \
chmod 600 /root/.ssh/id_rsa.pub
如您所见,值取自环境变量,这些变量实际上包含键,我尝试回应它们。 我假设这个问题在某种程度上与我的计算机、秘密管理器和从环境变量中回显值之间的某个阶段被损坏的密钥有关,但我无法理解它可能发生的确切位置。
我做了一些挖掘,发现我关于 SSH 键在某个时候被破坏的假设是正确的。 问题说明:
因此,为了解决此问题,我执行了以下操作:我在主机上将密钥编码为 base64,并在最后一刻对其进行了解码。 请注意对base64
的调用
mkdir -p /root/.ssh && chmod 0700 /root/.ssh && echo "$CONTAINER_PRIVATE_KEY" | base64 --decode > /root/.ssh/id_rsa && \
echo "$CONTAINER_PUBLIC_KEY" | base64 --decode > /root/.ssh/id_rsa.pub && chmod 400 /root/.ssh/id_rsa && \
chmod 600 /root/.ssh/id_rsa.pub
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.