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.