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 developers
grupie i tak umask
jest 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.com
za pomocą ~/.ssh/config
:
Host example.com
User beaks
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa_business
Pierwsze logowanie działa idealnie, ssh example.com
otwiera połączenie z moim kontem użytkownika i wszystko jest w porządku.
Problem pojawia się w następnym kroku,
git ls-remote [email protected]: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.com
jako jego git
użytkownik wspólny .
Nie mogę również wykluczyć EC2
dziwnoś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 beaks
klucza dla swojego git
użytkownika.
Chętnie dodam dodatkowe informacje, jeśli coś przeoczyłem.
ssh-add -l
aby upewnić się, że rzeczywiście masz w nim jakieś klucze.Odpowiedzi:
Samo zobaczenie, że ssh-agent działa, jest niewystarczające. Sprawdź, czy klucz jest obecny
ssh-add -L
Czy sprawdziłeś, czy ten klucz działa z innego hosta? Cossh-add -L
drukuje w tym systemie?Możesz także uruchomić
GIT_TRACE=1 git ls-remote ...
i wypisze polecenie ssh, które uruchomi. Możesz ręcznie uruchomić polecenie ssh i sprawić, aby działał przed wprowadzeniem git do obrazu.źródło
Nikt tak naprawdę nie odpowiedział na to pytanie, więc ludzie przyjeżdżający tutaj mogą skorzystać z mojej odpowiedzi na podobne pytanie. https://superuser.com/a/1141035/3376
źródło