从CD Pipeline SSH到Compute Engine VM

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从CD Pipeline SSH到Compute Engine VM相关的知识,希望对你有一定的参考价值。

我有一段时间让我的Google服务帐户从bitbucket管道进入我们的计算引擎实例。

Script:
gcloud compute ssh instance1 --zone us-central1-a --quiet --verbosity=info --command="gracefully shutdown processes" && 
gcloud compute scp ~/ instance1:~/ --zone us-central1-a --quiet --recurse --compress && 
gcloud compute ssh instance1 --zone us-central1-a --quiet --verbosity=info --command="start the services"

ERROR: (gcloud.compute.ssh) Could not SSH into the instance.  It is possible that your SSH key has not propagated to the instance yet. Try running this command again.  If you still cannot connect, verify that the firewall and instance are set to accept ssh traffic.
Permission denied (publickey).
lost connection
ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1].

我甚至尝试过没有gcloud的老式SSH方式。我使用metadata将公钥添加到实例中。我可以在我的本地机器上SSH,但是使用bitbucket管道,我得到一个权限被拒绝错误。

script:
        - echo $PRIVATE_SSH_KEY > ./ssh_key
        - chmod 400 ssh_key
        - ssh -t -t -i ssh_key bitbucket-service-account@<IP>

Permission denied (publickey).

我怎么可能做错了?

答案

需要https://www.googleapis.com/auth/compute这个角色。将该角色添加到VM的服务帐户[1]。遗憾的是,尚未在Google Cloud文档中记录。

[1] https://cloud.google.com/iam/docs/granting-roles-to-service-accounts

另一答案

感谢您帮助Alessio。我在挖掘后能够弄明白。

  1. 使用bitbucket ssh keygen工具创建bitbucket密钥对
  2. 将公钥从步骤1复制到计算引擎实例,但请记住在密钥末尾粘贴bitbucket用户名
  3. ssh -i ~/.ssh/config <Bitbucket-Username>@<IP-OF-VM>

以上是关于从CD Pipeline SSH到Compute Engine VM的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将目录从 Google Compute Engine 实例复制到我的本地计算机?

未添加来自元数据的 Google Cloud Compute 实例 SSH 密钥

错误:(gcloud.compute.ssh)[/usr/bin/ssh] 退出并返回代码 [255]

错误:(gcloud.compute.ssh)无法获取资源:-权限不足

Jenkins pipeline:pipeline 语法详解

Linux开发者的CI/CD配置jenkins凭据从github拉取代码