Интересно, может ли кто-нибудь помочь мне с несколькими туннельными переходами для серверов ...
в основном моя установка выглядит примерно так ...
[desktop01]=====[server01]=====[server02]---------[machine01]
\--------[machine02]
\-------[machine03]
\------[machine04]
Я хочу настроить несколько туннелей ssh, чтобы со своего рабочего стола я мог напрямую подключаться по ssh к машинам с 01 по 04 без необходимости поочередно подключать ssh к каждому промежуточному ящику ...
Таким образом, desktop01 может видеть только server01, server02 может принимать соединения только от server01, а машины с 01 по 04 принимают соединения только от server02.
Может ли кто-нибудь помочь, поскольку я действительно застрял в этом.
Заранее спасибо :)
Следующая конфигурация в ~/.ssh/config
позволяет динамически настраивать узлы перехода, разделяя их %
условное обозначение:
Host *%*
ProxyCommand ssh $(echo %h | cut -d%% -f2-) nc $(echo %h | cut -d%% -f1) %p
Затем вы могли бы запустить ssh machine01%server02%server01
и он будет подключаться к machine01 через server01 и server02. (Это не так хорошо работает, когда, к сожалению, вам нужно указать имена пользователей, отличные от стандартных.)
Что ж, вы можете построить что-то вроде следующего с указанием портов:
(Синтаксис: lport:remotehost:rport
, что означает "Перенаправить порт lport на локальном компьютере на rport на удаленном компьютере)
[server01] [server02]
22001:server02:22001 22001:machine01:22
22002:server02:22002 22002:machine02:22
22003:server02:22003 22003:machine03:22
22004:server02:22004 22004:machine04:22
Затем вы можете просто сделать ssh -p 22001 usernamefrom_machine01@server01
подключиться к machine01
с соответствующим именем пользователя.
Чтобы построить переадресацию портов, используйте либо -L
вариант ssh или настройте его с помощью вашего ~/.ssh/config
файл.
Подробнее см. man ssh
и man ssh_config
.
На это ответили с несколькими вариантами на superuser.com https://superuser.com/questions/96489/ssh-tunnel-via-multiple-hops