Despliegue de Capistrano desde la máquina local

Estoy intentando crear un nuevo usuario para implementar mi aplicación desde mi máquina local a mi server externo.

Lo tengo trabajando usando root pero entiendo que no es seguro usar root, por lo tanto, quiero crear un usuario llamado 'deployer'. Agregué este usuario a mi server externo y copié mi key local is_rsa.pub en /.ssh/authorized_keys en el server, sin embargo, cuando ejecuto la cap development deploy , sigo recibiendo el siguiente error:

 failed: "sh -c 'if [ -d /var/www/vhosts/xyz.co.uk/shanetworking/cached-copy ]; then cd /var/www/vhosts/xyz.co.uk/shanetworking/cached-copy && git fetch -q origin && git fetch -- tags -q origin && git reset -q --hard 2b738f4ca8008dcf9e84c4be5d63d906a7bfd760 && git clean -q -d -x -f; else git clone -q [email protected]github.com:xyz/xyz.co.uk.git /var/www/vhosts/xyz.co.uk/shanetworking/cached-copy && cd /var/www/vhosts/xyz.co.uk/shanetworking/cached- copy && git checkout -q -b deploy 2b738f4ca8008dcf9e84c4be5d63d906a7bfd760; fi'" on x.xx.xx.xxx 

Si ejecuto ssh -T [email protected] en el server externo, dice:

 Hi username! You've successfully authenticated, but GitHub does not provide shell access. 

Este nombre de usuario no es deployer, supongo que es el nombre de usuario de la count de github.

¿Alguna idea de lo que tengo que hacer? ¿Debo crear también el usuario deployer en mi máquina local?

Aquí está mi file deploy.rb:

 set :stage_dir, 'app/config/deploy' # needed for Symfony2 only set :stages, %w(production staging development) require 'capistrano/ext/multistage' set :application, "xyz.co.uk" set :user, "deployer" # The server's user for deploys set :normalize_asset_timestamps, false set :repository, "[email protected]/xyz.co.uk.git" set :scm, :git set :keep_releases, 3 after "deploy:update", "deploy:cleanup" set :use_sudo, false set :web_path, "web" set :shanetworking_files, ["app/config/parameters.yml"] set :shanetworking_children, [app_path + "/logs", web_path + "/uploads"] set :use_composer, true set :update_vendors, true set :dump_assetic_assets, true set :deploy_via, :remote_cache #logger.level = Logger::MAX_LEVEL after "deploy:update_code" do capifony_pretty_print "--> Ensuring cache directory permissions" run "setfacl -R -mu:www-data:rwX -mu:`whoami`:rwX #{latest_release}/#{cache_path}" run "setfacl -dR -mu:www-data:rwX -mu:`whoami`:rwX #{latest_release}/#{cache_path}" capifony_puts_ok end 

file deveopment.rb:

 server 'x.xx.xx.xxx', :app, :web, :db, :primary => true ssh_options[:port] = 1234 ssh_options[:forward_agent] = true default_run_options[:pty] = true set :deploy_to, "/var/www/vhosts/xyz.co.uk" set :symfony_env_prod, "dev" set :branch, "develop" # Need to clear *_dev controllers set :clear_controllers, false 

Gracias

Desea que el equipo de destino use sus cnetworkingenciales de SSH locales para autenticarse en Github. Haga esto colocando las dos inputs siguientes en su deploy.rb

 ssh_options[:forward_agent] = true default_run_options[:pty] = true 

O bien, otra forma es ir a su repository de Github y agregar la key SSH pública de su server de destino como una key de implementación.

 https://github.com/your_github/your_repo/settings/keys 

Esto le da acceso al server de destino de acceso solo al repository especificado sin tener que usar su key SSH personal.

El problema se debía a que el usuario "implementador" no tenía permissions de escritura en el server.