SSH в виртуальную машину Compute Engine из CD Pipeline

У меня очень много времени на то, чтобы моя учетная запись службы Google подключилась к нашему экземпляру Compute Engine по ssh из конвейеров битбакета.

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

Я даже пробовал старомодный способ SSHing без gcloud. Я добавил открытый ключ к экземпляру, используя metadata. Я могу подключиться по SSH на моем локальном компьютере, но с конвейерами битбакета я получаю ошибку отказа в разрешении.

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

Permission denied (publickey).

Что я мог делать не так?


person Mike    schedule 05.02.2018    source источник


Ответы (2)


Требуется роль https://www.googleapis.com/auth/compute. Добавьте эту роль в учетную запись службы виртуальной машины [1]. К сожалению, это еще не задокументировано в документации Google Cloud.

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

person Alessio    schedule 06.02.2018
comment
К сожалению, эта роль уже привязана к учетной записи службы. - person Mike; 06.02.2018
comment
проверьте, совпадает ли ключ pub с ключом, который находится внутри ./.ssh/authorized_keys, который находится в экземпляре-1, иначе вы можете воссоздать pubkey, удалив каталог ~ / .ssh / и снова запустив gcloud ssh, это приведет к сгенерировать новый ключ pub. помните, что закрытый ключ, созданный командой gcloud, будет ~ / .ssh / google_compute_engine. поэтому ручная команда будет ssh -i ~ / .ssh / google_compute_engine user @ ip - person Alessio; 08.02.2018

Спасибо за помощь Алессио. Я смог понять это после того, как покопался.

  1. Создайте пару ключей bitbucket с помощью инструмента генерации ключей bitbucket ssh
  2. Скопируйте открытый ключ из шага 1 в экземпляр Compute Engine, но не забудьте вставить свое имя пользователя bitbucket в конце ключа.
  3. ssh -i ~/.ssh/config <Bitbucket-Username>@<IP-OF-VM>
person Mike    schedule 08.02.2018