Error "fatal: Autenticación fallida" al implementar (repository privado)

Estoy intentando implementar mi aplicación Ruby on Rails en el server de producción alojado en Digital Ocean. No ocurre ningún problema cuando configuro mi repository en "Público", pero cuando configuro mi repository en "Privado" recibí el error "fatal: Autenticación fallida":

SSHKit::Runner::ExecuteError: Exception while executing on host 178.62.16.69: git exit status: 128 git stdout: remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/ryzalyusoff/xxxxxx.git/' git stderr: Nothing written SSHKit::Command::Failed: git exit status: 128 git stdout: remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/ryzalyusoff/xxxxxx.git/' git stderr: Nothing written Tasks: TOP => git:check (See full trace by running task with --trace) The deploy has failed with an error: Exception while executing on host 178.62.16.69: git exit status: 128 git stdout: remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/ryzalyusoff/xxxxxx.git/' git stderr: Nothing written 

enter image description here

Entonces, ¿qué debo hacer para poder implementar en mi server de producción sin necesidad de configurar mi repository en "Público"?

¡Gracias!

————————- ACTUALIZACIÓN 1 ———————– —–

Ya generé la key pública y la puse en mi count de github. Lo he confirmado probándolo usando el siguiente command:

 ssh -T git@github.com 

enter image description here

————————- ACTUALIZACIÓN 2 ———————– —–

He cambiado mi set: repo_url a ssh, pero el error persiste. Aquí está mi file deploy.rb :

 # Change these server '178.62.16.69', port: 22, roles: [:web, :app, :db], primary: true set :repo_url, 'git@github.com:ryzalyusoff/xxxxxx.git' set :application, 'xxxxxx' set :user, 'deploy' set :puma_threads, [4, 16] set :puma_workers, 0 # Don't change these unless you know what you're doing set :pty, false set :use_sudo, false set :stage, :production set :deploy_via, :remote_cache set :deploy_to, "/home/#{fetch(:user)}/apps/#{fetch(:application)}" set :puma_bind, "unix://#{shanetworking_path}/tmp/sockets/#{fetch(:application)}-puma.sock" set :puma_state, "#{shanetworking_path}/tmp/pids/puma.state" set :puma_pid, "#{shanetworking_path}/tmp/pids/puma.pid" set :puma_access_log, "#{release_path}/log/puma.error.log" set :puma_error_log, "#{release_path}/log/puma.access.log" set :ssh_options, { forward_agent: true, user: fetch(:user), keys: %w(~/.ssh/id_rsa.pub) } set :puma_preload_app, true set :puma_worker_timeout, nil set :puma_init_active_record, true # Change to false when not using ActiveRecord ## Defaults: # set :scm, :git # set :branch, :master # set :format, :pretty # set :log_level, :debug # set :keep_releases, 5 set :whenever_identifier, ->{ "myapp_#{fetch(:stage)}" } namespace :puma do desc 'Create Directories for Puma Pids and Socket' task :make_dirs do on roles(:app) do execute "mkdir #{shanetworking_path}/tmp/sockets -p" execute "mkdir #{shanetworking_path}/tmp/pids -p" end end before :start, :make_dirs end namespace :deploy do desc "Make sure local git is in sync with remote." task :check_revision do on roles(:app) do unless `git rev-parse HEAD` == `git rev-parse origin/master` puts "WARNING: HEAD is not the same as origin/master" puts "Run `git push` to sync changes." exit end end end desc 'Initial Deploy' task :initial do on roles(:app) do before 'deploy:restart', 'puma:start' invoke 'deploy' end end desc 'Restart application' task :restart do on roles(:app), in: :sequence, wait: 5 do invoke 'puma:restart' end end before :starting, :check_revision after :finishing, :compile_assets after :finishing, :cleanup after :finishing, :restart end 

EL ERROR

enter image description here

Capistrano asume que va a reenviar la key SSH para autenticarse en Git. Esto significa que la key que usa en su máquina local será la que usará su server también cuando realice una cap deploy .

Por supuesto, esto solo funcionará si está utilizando SSH para conectarse a Git. Según sus posts de error, parece que no lo es. Parece que está utilizando la URL https: lugar de la SSH.

Cambia tu :repo_url al estilo SSH y deberías estar bien.

P.ej

 set :repo_url, "git@github.com:ryzalyusoff/xxxxxx.git" 

Necesita crear una key ssh y proporcionar github con su key pública.

 $ssh-keygen -t rsa 

Copie el text * .pub en su portapapeles y agréguelo a su count github.