rubber capistrano desplegar a ec2 de bitbucket get permiso denegado

He hecho esto algunas veces en el pasado para otros proyectos y, finalmente, lo hago funcionar, pero cada vez parece que no puedo recordar exactamente qué hacer.

Tengo un server ec2 ubuntu y estoy implementando con capistrano y he usado caucho para establecer el aumento de la pobreza.

En mi server ec2, he generado keys ssh, agregadas a bitbucket (bajo mis counts, key ssh. Al principio probé con las keys de proyecto e implementación, pero tampoco funcionó). En mi server ec2, puedo ingresar y clonar mi repository en mi casa de manera manual y directa. He agregado la key al agente de ssh.

Puedo implementar muy bien si no uso scm y configuro_vía para: copyr. Creo que esto agarra mi proyecto local y lo despliega.

He leído esto: https://confluence.atlassian.com/display/BITBUCKET/Using+Deployment+Keys https://confluence.atlassian.com/display/BITBUCKET/Troubleshooting+SSH+Issues https: // confluence. atlassian.com/pages/viewpage.action?pageId=270827678

Esto funciona bien:

ubuntu@production:~$ ssh -T hg@bitbucket.org conq: logged in as myBitBucketUser. You can use git or hg to connect to Bitbucket. Shell access is disabled. 

Aquí está el post de error que recibo durante la implementación:

 * executing "if [ -d /mnt/myProject-production/shanetworking/cached-copy ]; then cd /mnt/myProject-production/shanetworking/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard f2b5b8b6cd1c7835d020d66fdc09b42b2870561e && git clean -q -d -x -f; else git clone -q git@bitbucket.org:myRepo.git /mnt/myProject-production/shanetworking/cached-copy && cd /mnt/myProject-production/shanetworking/cached-copy && git checkout -q -b deploy f2b5b8b6cd1c7835d020d66fdc09b42b2870561e; fi" servers: ["production.myserver.com"] [production.myserver.com] executing command ** [production.myserver.com :: out] Permission denied (publickey). ** fatal: The remote end hung up unexpectedly 

Aquí está mi deploy.rb:

 set :rails_env, Rubber.env on :load do set :application, rubber_env.app_name set :runner, rubber_env.app_user set :deploy_to, "/mnt/#{application}-#{Rubber.env}" set :copy_exclude, [".git/*", ".bundle/*", "log/*", ".rvmrc"] end # Use a simple directory tree copy here to make demo easier. # You probably want to use your own repository for a real app #set :scm, :none #set :repository, "." #set :deploy_via, :copy ssh_options[:forward_agent] = true # also tried false set :repository, "git@bitbucket.org:myProject.git" set :scm, "git" set :deploy_via, :remote_cache set :branch, 'master' # Easier to do system level config as root - probably should do it through # sudo in the future. We use ssh keys for access, so no passwd needed set :user, 'root' set :password, nil # Use sudo with user rails for cap deploy:[stop|start|restart] # This way exposed services (mongrel) aren't running as a privileged user set :use_sudo, false # also tried true 

Me encontré con este problema usando goma también.

Si tiene varias instancias, necesitará get keys SSH para todas las instancias, ya que rubber implementará el código para todas. No he encontrado una manera de prevenir esto.

Las keys ssh para usar están en ~ / .ssh o /root/.ssh si las keys que generó están en un directory diferente o bajo un usuario diferente, probablemente no se las reconozca como rubber deploys usando el usuario 'root' y eso es el usuario está obteniendo del repository.

Espero que esto ayude.

Utilicé las keys ssh generadas en mi máquina local tanto para el server como para el repository bitbucket y desplegué usando capistrano. Entonces, usar eso resolvería tu problema.

De la manera en que lo hice

Utilicé la key pública (id_rsa.pub) de mi máquina local para

  • instancia ec2 – guía y
  • bitbucket – guía .

deploy.rb

 ssh_options[:forward_agent] = true 

Eso reenvía la authentication desde su máquina local cuando el server de implementación intenta conectarse a su server git.

Posible solución a la forma en que lo intentó

A diferencia de ssh git@github.com, ssh git @ bitbucket no se agrega a la list de hosts conocidos. Entonces, la forma de hacerlo en bitbucket debe ser https://confluence.atlassian.com/display/BITBUCKET/Using+the+SSH+protocol+with+Bitbucket