【问题标题】:How to deploy from CircleCI to Google Compute Engine?如何从 CircleCI 部署到 Google Compute Engine?
【发布时间】:2017-09-04 10:55:45
【问题描述】:

我想在 CI 测试后将 CircleCi 的工件部署到 Google Compute Engine, 但我陷入了 SSH 密钥问题。
gcloud compute copy-files运行时,gcloud会在CircleCI的部署过程中要求生成ssh密钥,我不知道如何处理。

警告:gcloud 的 SSH 公钥文件不存在。
警告:gcloud 的 SSH 私钥文件不存在。
警告:您没有 gcloud 的 SSH 密钥。
警告:将执行 SSH keygen 以生成密钥。
生成公钥/私钥 rsa 密钥对。
输入密码(无密码为空):

我查看了文档herehere,但都没有提到与SSH 相关的主题。那么我应该使用什么 SSH 密钥以及如何将其安全地传递给 gcloud?

[更新] 这是我在部署步骤中的命令。

  - echo $GCLOUD_SERVICE_KEY | base64 --decode --ignore-garbage > ${HOME}/gcloud-service-key.json
  - sudo /opt/google-cloud-sdk/bin/gcloud --quiet components update
  - sudo /opt/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file ${HOME}/gcloud-service-key.json
  - sudo /opt/google-cloud-sdk/bin/gcloud config set project $GCLOUD_PROJECT_ID
  - sudo /opt/google-cloud-sdk/bin/gcloud compute copy-files ./dist instance-1:/tmp/ --zone $GCLOUD_INSTANCE_ZONE

【问题讨论】:

    标签: ssh google-cloud-platform google-compute-engine circleci


    【解决方案1】:

    我遇到了同样的问题,经过修改并阅读了google cloud docs,我意识到我需要生成一个 ssh 密钥。

    我使用 CircleCI(这也适用于 TravisCI),这是我添加到我的 circle.yml 文件以生成 ssh 密钥的命令: - ssh-keygen -q -N "" -f ~/.ssh/google_compute_engine

    【讨论】:

    • 您好,谢谢您的回答。我试过了,但是当 circleci 运行复制文件命令gcloud compute copy-files ./dist instance-1:/tmp/ --zone $GCLOUD_INSTANCE_ZONE 时得到了Updating project ssh metadata...-Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 。有什么想法吗,或者你遇到过吗?
    【解决方案2】:

    第一个错误:

    输入密码(无密码为空):

    • 您必须添加--quiet 标志。

    gcloud 计算复制文件

    此命令确保用户的公共 SSH 密钥存在于项目的元数据中。如果用户没有公共 SSH 密钥,则使用 ssh-keygen(1) 生成一个(如果给出 --quiet 标志,则生成的密钥将有一个空密码)。

    https://cloud.google.com/sdk/gcloud/reference/compute/copy-files

    第二个错误:

    权限被拒绝(公钥、gssapi-keyex、gssapi-with-mic)

    • 在实例名称前添加一个用户338234243-compute@instance-1:/tmp
    • 删除实例路径instance-1:/tmp的最后一个/
    • 检查 tmp 目录的所有者(您选择的用户应该有 R&W 权限)

    我生成的 ssh 密钥的默认用户似乎是root,而 GCC sshd 不允许 root 连接...

    【讨论】:

    • @choasia 如果没有解决您的问题,请随时发表评论。
    • 您好,感谢您的回答。对不起,因为我刚刚结束假期,所以迟到了。我会尽快尝试您的解决方案。
    • 太棒了!像魅力一样工作。非常感谢!
    猜你喜欢
    • 2016-03-25
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2019-05-20
    相关资源
    最近更新 更多