【问题标题】:Dockerfile: skip passphrase for private keyDockerfile:跳过私钥的密码
【发布时间】:2017-08-18 18:47:35
【问题描述】:

我正在使用私钥从我的 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 是一个参数。我无法重新创建此密钥。 我的问题是在连接过程中出现以下错误: key_load_private_type: incorrect passphrase supplied to decrypt private key

是否有可能以某种方式跳过密码?

【问题讨论】:

    标签: github docker dockerfile ssh-keys


    【解决方案1】:

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

    您可能想调查GitHub Deploy Key 的使用情况,它是每个存储库的 ssh 密钥,授予对存储库的只读访问权限。这些旨在完全解决您遇到的情况:需要从需要身份验证的 GitHub 存储库自动部署软件。

    【讨论】:

    • 是的,请改用 Github Deploy Keys。这是在非开发环境中与 Github 交互的最佳实践。
    • 如上所述,我无法重新生成密钥
    • 我并不是建议您重新生成密钥。我建议您(a)从密钥中删除密码,或(b)使用附加密钥。如果答案不清楚,我深表歉意。
    【解决方案2】:

    您的 MY_PRIVATE_KEY 似乎受密码保护(密码为空的密钥与未加密的密钥相同)。

    .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-----
    

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题,结果发现原因是由于 Makefile 导致 ssh 密钥的复制方式不同

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-01
        • 2016-08-26
        • 1970-01-01
        • 2023-03-10
        • 2012-08-02
        • 2018-11-21
        • 2018-09-18
        • 1970-01-01
        相关资源
        最近更新 更多