从CD Pipeline SSH到Compute Engine VM

时间:2018-02-05 20:42:48

标签: ssh google-compute-engine bitbucket-pipelines

我有一段时间让我的Google服务帐户从bitbucket管道进入我们的Compute Engine实例。

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).

我可能做错了什么?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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