node.js - 在运行时在 docker 容器中 pull ssh key

标签 node.js git ssh docker dockerfile

我正在创建一个 nodejs 应用程序,它将与 Git 存储库集成并执行推送、 pull 提交等操作。我正在将应用程序移动到 Docker。
但是我找不到在运行时将 ssh key 放入 docker 镜像的方法。出于安全原因,我想避免在构建时在 docker 镜像中复制 ssh key 。

我尝试在运行时将 ssh key 作为环境变量传递,例如:

docker run -i -t -e KEY="sshkey" imagename

并在 node.js 中手动创建 ssh 文件夹和 ssh key
mkdirSync('/root/.ssh/', (err) => {
    writeFileSync('/root/.ssh/id_rsa.pub', sshKey, (err) => {
    })
})

但是,这似乎不起作用,尝试克隆存储库时仍然出现权限错误。
  • 我是否需要做一些事情来加载 ssh key 以便 git 可以使用它们?
  • 有没有办法使用 Dockerfile 来做到这一点。我知道我可以在构建时添加它,但还没有找到在运行时执行它的方法。
  • 如何检查正在运行的 docker 容器的 fs?
  • 最佳答案

    以下人为设计的示例演示了如何从容器中读取主机上的私钥。

    docker run -it --rm -v ~/.ssh/id_rsa:/root/.ssh/id_rsa:ro ubuntu cat /root/.ssh/id_rsa
    

    这应该让以 root 身份运行的进程使用您的凭据进行身份验证。

    关于node.js - 在运行时在 docker 容器中 pull ssh key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39272557/

    相关文章:

    git - 为什么 git 不进一步减小存储库的大小?

    javascript - GitHub 速率限制防止返回用户提交历史记录

    git - 如何控制 Handlebars 如何生成换行符?

    node.js - 嵌套包含 Sequelize

    git - 如何使用压缩的提交进行 rebase

    ruby - 我如何获得 PTY.spawn 子退出代码?

    python - 使用 python 通过 ssh 连接到 mysql 数据库

    python - 通过 ssh 隧道远程运行 ipython notebook

    node.js - 如何旋转我在 Node.js 中写入的文件?

    node.js - 如何保持 Karma 服务器运行,但仅在我手动告诉它之前才运行测试?