2012-04-12 8 views
12

Ich versuche, ein Projekt mit Capistrano zu implementieren. Mein Entwicklungscomputer läuft Windows 7; Der Server, auf dem ich bin, ist Linux.Capistrano-Bereitstellung von Windows mit der Option forward_agent: "Fehler beim Lesen der Antwortlänge vom Authentifizierungs-Socket."

Im deploy.rb Skript wird folgendes festgelegt:

ssh_options[:forward_agent] = true 

Das Capistrano Skript anläuft, ich bin für meine SSH-Schlüssel für die Passphrase gefragt, an welcher Stelle lokal ein Git-Befehl ausgeführt wird:

* executing `deploy:update_code' 
executing locally: "git ls-remote [email protected]:pathto/gitproject.git develop" 
Enter passphrase for key '/c/Users/Sam/.ssh/id_rsa': 
command finished in 6999ms 

(ich habe den realen git Weg von der oben entfernt, wie Sie wahrscheinlich sehen können.)

ich mein Passwort eingeben und das funktioniert gut. Allerdings versucht Capistrano dann etwas ähnliches auf dem entfernten Rechner zu tun (umbenannt in staging-server.com in der unten) und ich erhalte eine Fehlermeldung - die letzte Zeile dieses Extraktes sehen:

[staging-server.com] executing command 
[staging-server.com] sh -c 'git clone [email protected]:pathto/gitproject.git /home/perstest/releases/20120412074500 && cd 
/home/perstest/releases/20120412074500 && git checkout -b deploy 50eaf06d06d66fd20c3e55038276f420d8c308a8 && (echo 50eaf06d06d66fd20c3e55038 
276f420d8c308a8 > /home/perstest/releases/20120412074500/REVISION)' 
** [staging-server.com :: out] Initialized empty Git repository in /home/perstest/releases/20120412074500/.git/ 
** [staging-server.com :: err] Error reading response length from authentication socket. 

Wenn ich Kommentar Aus der Zeile "forward_agent" in deploy.rb wird diese Installation erfolgreich ausgeführt. Dabei wird vermutlich der Schlüssel vom Bereitstellungsserver selbst verwendet.

Mein SSH-Schlüssel scheint zu arbeiten - schließlich funktioniert der erste git-Befehl, ich kann es in git push/pull verwenden und ssh-T [email protected] meldet, was es (wie auf github:help empfohlen) sollte.

Ich nahm an, dass mein Computer keine Schlüssel lieferte, wenn sie vom Remote-Server dazu aufgefordert wurden. Nach einer Menge Googeln fand ich die Empfehlungen unter http://hustoknow.blogspot.co.uk/2011/06/ssh-agent-and-agent-forwarding-on.html, die erklären, wie ssh-agent beim Start ausgeführt wird. Ich habe das alles von der Kommandozeile aus gemacht, also bin ich zu git-bash gegangen und habe dort mein .bash_profile eingerichtet, um das Skript, mit dem ich verlinkt bin, einzuschließen.

Nachdem ich das hinzugefügt hatte, wurde ich beim ersten Start von git bash zur Eingabe meiner Passphrase aufgefordert und konnte dann mit dem SSH-Schlüssel eine Verbindung zu github herstellen (ohne die Passphrase erneut eingeben zu müssen). Außerdem hat ssh-add -L berichtet, dass tatsächlich ein Schlüssel verfügbar war. Also alles scheint richtig eingerichtet zu sein!

Allerdings bekomme ich immer noch die "Fehler beim Lesen Antwortlänge vom Authentifizierungs-Socket." Error.

Irgendwelche Ideen? Dies funktioniert für meinen Kollegen (gleiche Datei deploy.rb), dessen Entwicklungsmaschine Linux ist.

+0

ich das genaue Problem habe mit einem Kollegen aus den Fenstern zu implementieren versuchen. Funktioniert gut für mich in Mac OS X 10.7 – kayaker243

Antwort

4

Dies ist ein Fehler von net-ssh als described here

+2

Ich bin mir nicht sicher, ob der Fehler auf dieser Seite genau der gleiche ist wie der, den ich sehe - die Fehlermeldungen sind unterschiedlich. Diese Seite verweist jedoch auf [ein abgelegtes Problem über Agentenweiterleitung und Windows] (https://github.com/net-ssh/net-ssh/issues/55). Wenn das Problem behoben wird, wird es wahrscheinlich die Dinge sortieren für meine Situation auch, obwohl der spezifische Fehler abweicht. Ich bin jetzt (aus anderen Gründen) auf Linux umgestiegen, also ist das eine Möglichkeit, das Problem zu lösen ;-) – Sam

+0

Anscheinend ist es jetzt behoben: [Fixed Pageant Support] (https://github.com/net-ssh/net -ssh/ziehen/140) – StormPooper