Poprzednie odpowiedzi wspominają, jak korzystać z dyrektywy ProxyJump (dodanej w OpenSSH 7.3) do łączenia się przez serwer pośredni (zwykle nazywany hostem bastionu), ale wspominają o tym tylko jako argumentie wiersza poleceń.
Jeśli nie jest to maszyna, z którą nie będziesz się w przyszłości podłączać, najlepszą rzeczą jest skonfigurowanie jej ~/.ssh/config
.
Umieściłbym plik taki jak:
Host office-machine
Hostname yochay-machine.internal.company.local
ProxyJump bastion-machine
Host bastion-machine
Hostname organization-server.company.com
...
Jeśli używasz wcześniejszej wersji OpenSSH, która nie obsługuje ProxyJump, zastąpisz ją odpowiednikiem:
ProxyCommand ssh -W %h:%p bastion-machine
a jeśli Twoja lokalna wersja ssh była naprawdę starą wersją, która nie obsługiwała -W
:
ssh bastion-machine nc %h %p
chociaż ten ostatni wymaga nc
zainstalowania maszyny bastionowej .
Zaletą ssh jest to, że możesz skonfigurować każde miejsce docelowe w pliku i będą się ładnie układać. W ten sposób skończysz office-machine
jako nazwa hosta dla wszystkich narzędzi (ssh, scp, sftp ...), ponieważ były to bezpośrednie połączenia, a oni dowiedzą się, jak się połączyć w oparciu o ssh_config. Możesz także Host *.internal.company.local
użyć symboli wieloznacznych, które sprawią, że wszystkie hosty kończące się w ten sposób przejdą przez określony bastion, i będzie to dotyczyć wszystkich z nich. Po prawidłowym skonfigurowaniu jedyną różnicą między wykonaniem jednego przeskoku lub dwudziestu byłoby wolniejsze czasy połączenia.