problema de capistrano

Tengo un problema con la implementación de mi aplicación en mi server.

Tengo msysgit, github y capistrano instalados y en funcionamiento.

He llevado con éxito mi aplicación a Github y puedo ejecutar exitosamente la cap deploy:setup para configurar en mi server desde mi máquina local.

PERO..

Cuando ejecuto la cap deploy:cold , me pide mi contraseña para conectarme con Repositorio de Github, luego me pide que me conecte de nuevo a mi server, pero luego me da un permiso denegado (key pública) y los devuelvo.

Parece que esto es un error con mis llaves, pero ¿cómo puede conectarse a mi server para hacer el cap deplo:setup ?

Mis keys públicas son las mismas tanto en github como en mi server. ¿Es correcto?

También cuando se ejecuta la cap deploy:setup me pide la contraseña de mi server de usuario ¿es correcto?

Por favor ayuda ya que esto me ha retrasado por días

Este es el error:

 $ cap deploy * executing deploy' * executing deploy:update' ** transaction: start * executing `deploy:update_code' executing locally: "git ls-remote g...@github.com:rmossuk/Macrotec.git master " Enter passphrase for key '/c/Users/Rick/.ssh/id_rsa': * executing "git clone -q g...@github.com:rmossuk/Macrotec.git /usr/local/lib/r uby/gems/1.9.1/gems/passenger-2.2.4/test/stub/rails_apps/Macrotec/releases/20090723213346 && cd /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.4/test/stub/ra ils_apps/Macrotec/releases/20090723213346 && git checkout -q -b deploy a28798bc0 d3b5688453a58bf4917d6c931187a7a && (echo a28798bc0d3b5688453a58bf4917d6c931187a7 a > /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.4/test/stub/rails_apps/Mac rotec/releases/20090723213346/REVISION)" servers: ["macclesfieldnutrition.co.uk"] Enter passphrase for c:/Users/Rick/.ssh/id_rsa: [macclesfieldnutrition.co.uk] executing command ** [macclesfieldnutrition.co.uk :: out] Permission denied (publickey). ** [macclesfieldnutrition.co.uk :: out] fatal: The remote end hung up unexpecte dly command finished *** [deploy:update_code] rolling back * executing "rm -rf /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.4/test/s tub/rails_apps/Macrotec/releases/20090723213346; true" servers: ["macclesfieldnutrition.co.uk"] [macclesfieldnutrition.co.uk] executing command command finished failed: "sh -c 'git clone -q g...@github.com:rmossuk/Macrotec.git /usr/local/lib/ ruby/gems/1.9.1/gems/passenger-2.2.4/test/stub/rails_apps/Macrotec/releases/20090723213346 && cd /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.4/test/stub/r ails_apps/Macrotec/releases/20090723213346 && git checkout -q -b deploy a28798bc 0d3b5688453a58bf4917d6c931187a7a && (echo a28798bc0d3b5688453a58bf4917d6c931187a 7a > /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.4/test/stub/rails_apps/Ma crotec/releases/20090723213346/REVISION)'" on macclesfieldnutrition.co.uk 

Muchas gracias rick

Si agrego esto a mi file deploy.rb

 set :ssh_options, {:forward_agent => true} on :start do `ssh-add` end 

Me sale este error diferente

 $ cap deploy triggering start callbacks for `deploy' Could not open a connection to your authentication agent. * executing `deploy' * executing `deploy:update' ** transaction: start * executing `deploy:update_code' executing locally: "git ls-remote git@github.com:rmossuk/Macrotec.git master " Enter passphrase for key '/c/Users/Rick/.ssh/id_rsa': * executing "git clone -q git@github.com:rmossuk/Macrotec.git /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.4/test/stub/rails_apps/Macrotec/releases/20090724112629 && cd /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.4/test/stub/rails_apps/Macrotec/releases/20090724112629 && git checkout -q -b deploy a28798bc0d3b5688453a58bf4917d6c931187a7a && (echo a28798bc0d3b5688453a58bf4917d6c931187a7a > /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.4/test/stub/rails_apps/Macrotec/releases/20090724112629/REVISION)" servers: ["macclesfieldnutrition.co.uk"] Enter passphrase for c:/Users/Rick/.ssh/id_rsa: [macclesfieldnutrition.co.uk] executing command *** [deploy:update_code] rolling back * executing "rm -rf /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.4/test/stub/rails_apps/Macrotec/releases/20090724112629; true" servers: ["macclesfieldnutrition.co.uk"] ** [deploy:update_code] exception while rolling back: TypeError, can't convert Net::SSH::Authentication::Pageant::Socket into IO c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.5.8/lib/capistrano/processable.rb:25:in `select': can't convert Net::SSH::Authentication::Pageant::Socket into IO (TypeError) from c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.5.8/lib/capistrano/processable.rb:25:in `process_iteration' from c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.5.8/lib/capistrano/command.rb:163:in `process!' from c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.5.8/lib/capistrano/command.rb:162:in `loop' from c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.5.8/lib/capistrano/command.rb:162:in `process!' from c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.5.8/lib/capistrano/command.rb:133:in `process' from c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.5.8/lib/capistrano/configuration/actions/invocation.rb:173:in `run_tree' from c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.5.8/lib/capistrano/configuration/connections.rb:172:in `execute_on_servers' from c:/InstantRails/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `each_slice' ... 40 levels... from c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.5.8/lib/capistrano/cli/execute.rb:14:in `execute' from c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.5.8/bin/cap:4 from c:/InstantRails/ruby/bin/cap:19:in `load' from c:/InstantRails/ruby/bin/cap:19 

Deberías tener en tu server (donde quieras implementar) las llaves de acceso tuyas instaladas para el server de git.

Deberías tener los files de tus keys (con chmod 600 ):

 id_rsa

 id_rsa.pub

en el directory ~ / .ssh (con chmod 700 ) en el server en la implementación del usuario

probablemente tenga esas llaves solo en su computadora de desarrollo local.

Puede agregar para su deployment el gancho de file para 'setup: cold', donde se cargarán automáticamente sus files de keys locales.

Esta pregunta es realmente antigua, pero acabo de encontrar el mismo problema nuevamente en una máquina con Windows 7. Debe agregar forward_agent y la location de su key ssh a su file de configuration de implementación: Aquí está mi solución en config / deploy.rb:

 set :ssh_options, :forward_agent => true set :ssh_options, :keys => %w(c:/Users/USERNAME/.ssh/id_rsa) 

Además de eso, la mejor solución sería desarrollar aplicaciones de Rails (y usar capistrano) en un entorno Linux. Esto evitaría toneladas de trucos, wordrounds y ahorraría mucho time 🙂

No es necesario tener las keys ssh para acceder al server de repository en el deployment de mahcine. Puede activar el SSH forward_agent, para hacer que ssh_agent lo siga de máquina en máquina. Para hacer esto con capistrano, puede agregar esta línea al file deploy.rb

ssh_options [: forward_agent] = true