¿Por qué de repente Capistrano no puede leer desde mi repository Bitbucket Git durante la implementación?

Utilizo Capistrano (v3.5.0) para implementar una pequeña aplicación de Rails desde mi máquina de desarrollo local a un VPS alojado en Linode usando una key de implementación configurada en Bitbucket. Tan tarde como la semana pasada, estaba funcionando como un encanto.

Hoy, sin embargo, cuando ejecuto el command habitual de cap deploy , falla en el tercer paso cuando intentaba leer desde mi repository de Bitbucket Git:

 DEBUG [6906a62c] Command: ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.2.1" GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/app/git-ssh.sh" ; /usr/bin/env git ls-remote --heads git@bitbucket.org:klenwell/app.git ) 

Este es el error:

 DEBUG [6906a62c] conq: repository access denied. DEBUG [6906a62c] fatal: The remote end hung up unexpectedly 

He realizado la solución de problemas obvia: busqué en Google los posts de error, confirmé que el VPS estaba operativo, verifiqué que el repository estaba accesible, verifiqué las keys SSH y confirmé que el agente SSH se estaba ejecutando. Si todo lo demás falla, intentaré generar una nueva key en mi server VPS.

Estos puntos en particular me tienen desconcertado:

  • Ha habido (por lo que puedo decir) que no hubo cambios en la configuration de Capistrano o VPS desde la última vez que se ejecutó con éxito. Veo el mismo command ejecutándose correctamente en mis loggings de Capistrano la semana pasada.
  • Cuando entro en mi server VPS como el usuario de implementación, puedo ejecutar ssh -T git@bitbucket.org y el mismo command exacto de ssh -T git@bitbucket.org manualmente sin problema.
  • El server de Jenkins en mi máquina local puede leer con éxito desde el mismo repository de Bitbucket utilizando su key de implementación.

¿Qué me estoy perdiendo?

Por defecto, Capistrano usa el reenvío de agente SSH. Efectivamente, esto significa que usará su key SSH local para autenticar con BitBucket.

Quizás su key local haya cambiado o ya no tenga acceso a BitBucket, lo que explicaría por qué la implementación ya no funciona.

Puede deshabilitar el reenvío de agente SSH de Capistrano (lo que permite que Git use la key de implementación que ha instalado en el server) de esta manera:

 set :ssh_options, { forward_agent: false }