我希望在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密钥对 . 输入密码(无密码短语为空):
我查看了文档here和here,但没有提到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 回答
第一个错误:
--quiet
标志 .https://cloud.google.com/sdk/gcloud/reference/compute/copy-files
第二个错误:
在实例名称
338234243-compute@instance-1:/tmp
之前添加用户删除实例路径的最后
/
instance-1:/tmp
检查tmp目录的所有者(您选择的用户应该有R&W权限)
默认情况下,我生成的ssh密钥的用户似乎是
root
,而GCC sshd不允许root连接...我有同样的问题,在修补更多并阅读google cloud docs后,我意识到我需要生成一个ssh密钥 .
我使用CircleCI(这也适用于TravisCI),这是我添加到我的
circle.yml
文件中以生成ssh密钥的命令:- ssh-keygen -q -N "" -f ~/.ssh/google_compute_engine