Przez ostatnie 2 godziny szukałem rozwiązania następującego problemu bez powodzenia.
Rozwój:
Używam uwierzytelniania publickey do łączenia się z moimi serwerami. Używam przekazywania ssh-agent, aby nie musieć zarządzać kluczami publicznymi / prywatnymi.
Powiedzmy, że mam serwery A, B and C
.
Działa to bardzo dobrze, jeśli łączę się z LOCAL ---> A ---> B
.
Działa to również bardzo dobrze, jeśli to robię LOCAL ---> A ---> C
.
Teraz, jeśli spróbuję LOCAL ---> A ---> B ---> C
, SSH nie może się połączyć B to C
.
Warto zauważyć: łączę się z serwerem A jako płynność, natomiast łączę się z serwerem B jako root. Łączenie się z serwerem B jako płynność rozwiązuje problem, ale nie jest to dla mnie opcja.
Zgodnie z zaleceniem użytkownika za ssh -A
każdym razem upewniam się, że przekazywanie agentów jest włączone.
Znalazłem jedno podobne pytanie, na które nie ma odpowiedzi: czy można łączyć przekazywanie agentów ssh przez wiele przeskoków?
Według @Zoredache tutaj: /server//a/561576/45671 Muszę tylko dostosować konfigurację klienta w każdym systemie pośrednim. Co, jak sądzę, zrobiłem.
ProxyCommand
przeskoku (jak wyjaśniono tutaj ) zamiast przekazywania agenta SSH. Za swoje podejście musisz zaufać wszystkim komputerom w łańcuchu, ponieważ mogą one (ab) używać twoich kluczy prywatnych. Podoba mi się również podejście ProxyCommand o wiele lepiej, ponieważ sprawdzanie znanych hostów odbywa się lokalnie, a ponadto możesz skonfigurować łańcuch w konfiguracji SSH, dzięki czemu możesz użyć jednego polecenia do połączenia z C.Odpowiedzi:
Aby przekazywanie agentów działało przez wiele przeskoków, wystarczy dostosować konfigurację klienta w każdym systemie pośrednim, aby przekazywanie agentów było możliwe.
Może to być tak proste, jak upewnienie się, że masz
/etc/ssh/ssh_config
to skonfigurowane. Ale jeśli masz konfiguracje dla poszczególnych klientów~/.ssh/config
, może być konieczne dostosowanie tych ustawień.Możesz sprawdzić, czy nastąpiło przekazanie agenta lub czy wystąpił błąd, jeśli tylko dodasz
-v
opcję.Sprawdź także, czy masz poprawny zestaw zmiennych środowiskowych.
źródło
ssh-add -l
notować klucze ssh myśli może uzyskać co poprzez swojego agenta. Upewnij się, że przekazujesz go przy każdym połączeniu!Requesting authentication agent forwarding.
w wynikach debugowania. Jeśli próbowałeś.bash_profile
uruchomić ssh-agent, usuń go stamtąd, w przeciwnym razie agent uruchomi się ponownie bez żadnych tożsamości.