首页 文章

如何从CircleCI部署到Google Compute Engine?

提问于
浏览
3

我希望在CI测试后将CircleCi的工件部署到Google Compute Engine,但我遇到了SSH密钥问题 .
gcloud compute copy-files 运行时,gcloud将要求在CircleCI 's deployment process, which I don'知道如何处理时生成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

2 回答

  • 1

    第一个错误:

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

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

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

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

    第二个错误:

    权限被拒绝(publickey,gssapi-keyex,gssapi-with-mic)

    • 在实例名称 338234243-compute@instance-1:/tmp 之前添加用户

    • 删除实例路径的最后 / instance-1:/tmp

    • 检查tmp目录的所有者(您选择的用户应该有R&W权限)

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

  • 3

    我有同样的问题,在修补更多并阅读google cloud docs后,我意识到我需要生成一个ssh密钥 .

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

相关问题