To zapytanie nie jest bezpośrednio związane z Git, ale ponieważ jednym z obsługiwanych transportów Gita jest SSH, a ja próbuję użyć przekazywania agentów, pomyślałem, że zapytam o wyjaśnienia (strony man zawiodły mnie)
Próbuję zautomatyzować wdrożenie oprogramowania za pomocą Capistrano, udało mi się zawiesić niektóre problemy (wstępne uruchamianie znanych hostów, przed wdrożeniem itp.), Ale mam następującą sytuację.
Mój zespół loguje się na serwerze jak oni sami, indywidualne konta użytkowników, wszyscy są w developersgrupie i tak umaskjest 002. Żadne z powyższych nie jest tak naprawdę istotne, z wyjątkiem stwierdzenia, że celem jest upewnienie się, że mój zespół może zawsze pracować samodzielnie, bez konieczności posiadania uprawnień superużytkownika.
Łączymy się z serwerem example.comza pomocą ~/.ssh/config:
Host example.com
User beaks
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa_business
Pierwsze logowanie działa idealnie, ssh example.comotwiera połączenie z moim kontem użytkownika i wszystko jest w porządku.
Problem pojawia się w następnym kroku,
git ls-remote git@github.com:project/repository.git
Korzysta z wyżej wymienionej warstwy transportowej Git + SSH (patrz link powyżej) - i zwykle powinien używać mojego klucza agenta przesyłania dalej (z którym zweryfikowałem obecność env | grep SSH_AUTH_SOCK)
Odpowiedź jest prosta: „uwierzytelnienie nie powiodło się (klucz publiczny), drugi koniec został nieoczekiwanie rozłączony”, podejrzewam, ponieważ agent mojego użytkownika nie jest używany, gdy zbliżam się github.comjako jego gitużytkownik wspólny .
Nie mogę również wykluczyć EC2dziwności (polityki bezpieczeństwa itp.) - ale w takim przypadku spodziewałbym się przekroczenia limitu czasu lub awarii połączenia. Jestem pewien, że uderzam github.com- i że mnie nie wpuszczają, ponieważ mój agent nie oferuje mojego beaksklucza dla swojego gitużytkownika.
Chętnie dodam dodatkowe informacje, jeśli coś przeoczyłem.
ssh-add -laby upewnić się, że rzeczywiście masz w nim jakieś klucze.