Туннель/мост SSH к удаленной базе данных

Вы не можете отключить его из-за того, как работает TCP.

TCP — это протокол, обеспечивающий гарантированную доставку и поток данных. Это означает, что все данные должны быть подтверждены получателем. До тех пор, пока это не будет сделано, стек TCP должен повторить попытку доставки пакетов, а для этого ему необходимо буферизовать любые данные, которые еще не были подтверждены. Кроме того, если в середине потока данных отсутствуют пакеты, получатель должен дождаться их прибытия, прежде чем он сможет переслать следующие данные приложению, поскольку необходимо сохранить порядок данных в потоке данных.

Когда сеть используется агрессивно, пакеты теряются, то есть либо сами данные, либо подтверждение.Это неявно блокирует соединение, поскольку оно должно ждать повторной доставки пакета. Существует несколько алгоритмов и параметров для настройки точного поведения стека TCP в зависимости от среды (низкая или высокая пропускная способность, низкая или высокая задержка... ), но из-за гарантий доставки TCP нет способ полностью отключить управление перегрузкой.

0
21.08.2019, 14:31
2 ответа

Вам необходимо добавить параметр -gв командную строку ssh:

     -g      Allows remote hosts to connect to local forwarded ports.
             If used on a multiplexed connection, then this option
             must be specified on the master process.

Это откроет перенаправленные порты на хосте B, чтобы они доступен из C. Это предполагает, что ваша конфигурация брандмауэра на Bразрешает эти соединения.

Опция -gизменяет локальный адрес привязки, который sshиспользует для локального порта. Без -g-L 8000:localhost:8000приводит к:

$ netstat -tln | grep 8000
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:8000                :::*                    LISTEN     

Как видите, в данном случае оба сокета привязаны к петлевому адресу(127.0.0.1для ipv4 и ::1для ipv6 ).

Вместо -gмы получаем:

$ netstat -tln | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN     
tcp6       0      0 :::8000                 :::*                    LISTEN     

В этом случае вы можете видеть, что sshтеперь привязывается к подстановочному адресу, а не к петлевому адресу.

3
28.01.2020, 02:22

Почему sudo? sudoне является решением всех проблем, а часто и причиной.

Думаю, это то, чего вы хотите.

ssh -L local_port:remote_ip:remote_port jump_user@jump_ip
ssh -L C_PORT:A_ip:3306 B_user@B_ip -f -N
  • пульт с точки зрения прыжка
  • прыжок с точки зрения местного населения
0
28.01.2020, 02:22

Теги

Похожие вопросы