2016-07-04 12 views
0

Ich verwende Capistrano (v3.5.0), um eine kleine Rails-Anwendung von meinem lokalen Entwicklungscomputer auf einen VPS auf Linode zu verteilen, wobei ein Deployment-Key auf Bitbucket verwendet wird. Noch letzte Woche funktionierte es wie ein Zauber.Warum kann Capistrano plötzlich während der Bereitstellung nicht mehr aus meinem Bitbucket Git-Repository lesen?

Heute jedoch, wenn ich den üblichen cap deploy Befehl ausführen, schlägt es in dem dritten Schritt, wenn es von meinem Bitbucket Git-Repository zu lesen versucht:

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 [email protected]:klenwell/app.git) 

Dies ist der Fehler:

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

Ich habe die offensichtliche Fehlerbehebung gemacht: googelte die Fehlermeldungen, bestätigte, dass das VPS betriebsbereit ist, verifizierte das Repository ist zugänglich, prüfte die SSH-Schlüssel, bestätigte, dass der SSH-Agent ausgeführt wird. Wenn alles andere fehlschlägt, werde ich versuchen, einen neuen Schlüssel auf meinem VPS-Host zu erzeugen.

Diese Punkte haben insbesondere mich flummoxed:

  • Es wurden (soweit ich das beurteilen kann) keine Änderungen an der Capistrano oder VPS-Konfiguration seit dem letzten erfolgreich ausgeführt wurde. Ich sehe den gleichen Befehl, der letzte Woche in meinen Capistrano-Protokollen erfolgreich ausgeführt wurde.
  • Wenn ich als Deploy-Benutzer in meinen VPS-Server schalte, kann ich und den gleichen genauen Git-Befehl manuell ohne Problem ausführen.
  • Der Jenkins-Server auf meinem lokalen Rechner kann mithilfe seines Implementierungsschlüssels erfolgreich dasselbe Bitbucket-Repository lesen.

Was fehlt mir?

+0

Capistrano verwendet Agent-Forwarding SSH. Effektiv bedeutet dies, dass es Ihren * lokalen * SSH-Schlüssel für die Authentifizierung mit BitBucket verwendet. Hat sich Ihr lokaler Schlüssel geändert oder hat er keinen BitBucket-Zugriff mehr? –

+0

@MattBrictson Sie haben es geschafft. Ich habe mehrere Bitbucket Benutzer auf meinem lokalen System und ich denke, der Standard wurde zwischen Deploys zurückgesetzt. Wie auch immer, die Lösung bestand darin, diese Zeile zu meiner Datei 'deploy.rb' hinzuzufügen:' set: ssh_options, {forward_agent: false} '. Konvertiere deinen Kommentar in eine Antwort und ich wähle ihn aus. Vielen Dank! – klenwell

Antwort

1

Standardmäßig verwendet Capistrano die SSH-Agentenweiterleitung. Effektiv bedeutet dies, dass es Ihren lokalen SSH-Schlüssel für die Authentifizierung mit BitBucket verwendet.

Möglicherweise hat sich Ihr lokaler Schlüssel geändert oder hat keinen BitBucket-Zugriff mehr, was erklären würde, warum die Bereitstellung nicht mehr funktioniert.

Sie können Capistrano SSH-Agent-Forwarding (Git wodurch die Bereitstellung Schlüssel verwenden haben Sie auf dem Server installiert ist) wie folgt deaktivieren:

set :ssh_options, { forward_agent: false }