Dockerfile:跳过私钥的密码

我使用私人密钥从我的Docker文件中从Github下载我的存储库。 我有这样的东西:

RUN mkdir -p /root/.ssh && echo "$MY_PRIVATE_KEY" >/root/.ssh/id_rsa && chmod 0600 /root/.ssh/id_rsa && ssh-keyscan github.com >> /root/.ssh/known_hosts && cat /root/.ssh/known_hosts && ssh -vvv git@github.com && pip install git+ssh://git@github.com/my_project.git@v1.0.0 && rm /root/.ssh/id_rsa 

MY_PRIVATE_KEY是一个参数。 我无法重新创build此密钥。 我的问题是,在连接过程中,我收到以下错误: key_load_private_type: incorrect passphrase supplied to decrypt private key

有没有可能跳过密码?

密码需要解密密钥。 你不能“跳过”它。 您可以使用ssh-keygen -p 删除密钥上的密码(请参阅手册页以了解详细信息)。

您可能需要调查GitHub部署密钥的使用情况,该密钥是每个存储库的ssh密钥,它授予对存储库的只读访问权限。 这些都是为了解决你自己所处的情况:需要从需要authentication的GitHub仓库自动部署软件。

您的MY_PRIVATE_KEY似乎被密码保护(具有空密码的密钥与未encryption的密钥不同)。

.ssh/id_rsa的密钥通常不是密码保护的,而是受到只允许所有者访问(0600)的权限保护。

您可以使用OpenSSL从您的密钥中删除密码,如下所示:

 set MY_PRIVATE_KEY = `echo $MY_PRIVATE_KEY | openssl rsa` 

id_rsa的内容应该如下所示:

 -----BEGIN RSA PRIVATE KEY----- . . . -----END RSA PRIVATE KEY-----