2012-04-12 18 views
12

Próbuję wdrożyć projekt za pomocą Capistrano. Moja maszyna programistyczna działa pod kontrolą systemu Windows 7; serwer, na którym działam, to Linux.Wdrażanie Capistrano w systemie Windows przy użyciu opcji forward_agent: "Błąd odczytu długości odpowiedzi z gniazda uwierzytelniania."

W skrypcie deploy.rb się, co następuje set:

ssh_options[:forward_agent] = true 

Skrypt Capistrano zaczyna się uruchamiając polecenie git lokalnie, w którym momencie mam zapytany o haśle dla mojego klucza SSH:

* 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 

(usunąłem prawdziwą ścieżkę git z powyższym, jak można prawdopodobnie zobaczyć.)

wejdę moje hasło i to działa dobrze. Jednak Capistrano następnie próbuje zrobić coś podobnego na zdalnej maszynie (przemianowany na staging-server.com w poniżej) i pojawia się błąd - zobaczyć ostateczną linię tego ekstraktu:

[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. 

Jeśli komentarz out linii forward_agent w deploy.rb, ta instalacja się powiedzie, prawdopodobnie za pomocą klucza z samego serwera wdrażania.

Wydaje się, że mój klucz SSH działa - w końcu działa początkowe polecenie git, mogę go użyć w git push/pull, a ssh -T [email protected] zgłasza, co powinien (zgodnie z zaleceniami na github:help).

Założono, że mój komputer nie wyświetlał kluczy na żądanie zdalnego serwera. Po bardzo wielu Googlingach znalazłem zalecenia na http://hustoknow.blogspot.co.uk/2011/06/ssh-agent-and-agent-forwarding-on.html, które wyjaśniają, jak uruchomić ssh-agent podczas uruchamiania. Robiłem to wszystko z wiersza poleceń, więc przełączyłem się na git-bash i skonfigurowałem mój .bash_profile, aby uwzględnić skrypt, z którym się połączyłem.

Po dodaniu tego, zostałem poproszony o podanie hasła podczas pierwszego uruchomienia git bash i mogłem wtedy połączyć się z github używając klucza SSH (bez konieczności ponownego wpisywania hasła). Ponadto ssh-add -L poinformował, że rzeczywiście dostępny jest klucz. Wszystko wydaje się więc poprawnie ustawione!

Jednak nadal otrzymuję komunikat "Błąd odczytu długości odpowiedzi z gniazda uwierzytelniania". błąd.

Wszelkie pomysły? Działa to dla mojego kolegi (ten sam plik deploy.rb), którego maszyną programistyczną jest Linux.

+0

mam dokładnie problem z współpracownik próbując wdrożyć od okien. Działa dobrze dla mnie w Mac OS X 10.7 – kayaker243

Odpowiedz

4

Jest to błąd z net-ssh jako described here

+2

Nie jestem pewien, czy błąd opisany na tej stronie jest dokładnie taki sam jak ten, który widzę - komunikaty o błędach są różne. Ta strona odwołuje się jednak [do pliku o przekierowaniu agenta i Windows] (https://github.com/net-ssh/net-ssh/issues/55), więc jeśli to zostanie naprawione, prawdopodobnie posortuje rzeczy dla mojej sytuacji, nawet jeśli konkretny błąd jest inny. Tak naprawdę przełączyłem się teraz na Linuksa (z innych powodów), więc jest to jeden ze sposobów rozwiązania tego problemu ;-) – Sam

+0

Wygląda na to, że jest już naprawiony: [Naprawiono obsługę korowodów] (https://github.com/net-ssh/net -ssh/pull/140) – StormPooper

Powiązane problemy