У меня проблемы с туннелированием через сервер ssh1. Это на машине клиента, и нет, они не будут обновляться до ssh2.
Немного предыстории: я могу успешно проложить туннель через шлюз клиента
localhost -> gateway.customer.example.com -> srv.customer.internal
используя эту конфигурацию
Host gateway
Hostname gateway.customer.example.com
IdentityFile ~/.ssh/mykey
...
Host srv-tunnel
ProxyCommand ssh gateway -W srv.customer.internal:22
IdentityFile ~/.ssh/mykey
...
а потом просто
$ ssh srv-tunnel
который отлично работает и автоматически устанавливает туннель, используя ключевой файл ~/.ssh/mykey
.
Я попробовал использовать похожую конфигурацию для этого многоадресного туннеля:
localhost -> gateway.customer.example.com
|
v
onemoregateway.customer.internal -> srv2.customer.internal
но на этот разonemoregateway
работает ssh 1 и не имеет nc
доступныхЯ могу подключиться по ssh onemoregateway
, но в командной строке сообщается, что The only permitted commands are ssh and scp.
при попытке настроить переадресацию, как указано выше, ssh завершает работу с ошибкой stdio forwarding require Protocol 2
.
Однако я не могу напрямую ssh из onemoregateway
в srv2
, потому что закрытый ключ находится только на моей локальной машине. Чтобы все усложнить, мне нужен один ключ для gateway
, а другой ключ для onemoregateway
и srv2
.
Итак, как мне проложить туннель srv2
?
Я думаю, что это как-то возможно, поскольку мои коллеги сделали это с помощью Putty+Pageant в Windows, но у меня Linux.
решение1
Хорошо, я нашел способ это сделать, но, похоже, нет способа сделать туннелирование прозрачным.
Host gateway
Hostname gateway.customer.example.com
IdentityFile ~/.ssh/mykey
...
Host tunnel-to-srv2
ProxyCommand ssh gateway -W onemoregateway.customer.internal
IdentityFile ~/.ssh/myotherkey
Protocol 1
LocalForward 10022 srv2.customer.internal:22
...
Host srv2
Hostname localhost
Port 10022
IdentityFile ~/.ssh/myotherkey
Protocol 1
...
И теперь мне нужно сделать
$ ssh tunnel-to-srv2
и, наконец, в отдельном терминале*
$ ssh srv2
* Я не могу найти способ отправить процесс туннелирования ssh в фоновый режим, даже с помощью-fNT
Редактировать: оказывается, onemoregateway
действительно есть nc
, и я могу его запустить, но мне нужно использовать полный путь/bin/nc
Итак, в конце концов у меня такая конфигурация
Host gateway
Hostname gateway.customer.example.com
IdentityFile ~/.ssh/mykey
...
Host tunnel-to-srv2
ProxyCommand ssh gateway -W onemoregateway.customer.internal
IdentityFile ~/.ssh/myotherkey
Protocol 1
...
Host srv2
ProxyCommand ssh tunnel-to-srv2 /bin/nc srv2.customer.internal 22
IdentityFile ~/.ssh/myotherkey
Protocol 1
...
и я получаю прозрачные туннельные прыжки, просто запустив
$ ssh srv2