Уменьшить размер файла

Адрес, указанный в -L , используется удаленный хост (B). Поэтому неудивительно, что у вас действительно есть туннель между A и B -L 5000: 127.0.0.1: 5000 . Когда вы подключаетесь к TCP-порту 5000 на A, соединение перенаправляется на 127.0.0.1:5000 на B.

С другой стороны -R 5001: 127.0.0.1: 5001 будет нормально, потому что адрес разрешается локальным хостом (A), а ваш пункт назначения - A. Когда вы подключаетесь к TCP-порту 5001 на B, соединение перенаправляется на 127.0.0.1:5001 на A.

Обратите внимание, что оба порта прослушивания -L / -R по умолчанию привязаны к localhost , поэтому они доступны только из A и B. соответственно. Если вы хотите разрешить другим хостам подключаться, добавьте часть bind_address в -L / -R . Достаточно простого добавления ведущего : :

ssh -L :5000:IP_of_C:5000 -R :5001:127.0.0.1:5001 IP_of_B

с этой настройкой A подключается к 127.0.0.1:5000 , а C подключается к IP_of_B: 5001 .

Если вы предпочитаете использовать 127.0.0.1 на обоих A и C, вам необходимо установить (виртуально) прямое SSH-соединение между A и C, что возможно с SSH через SSH-туннелирование с помощью ProxyCommand . Поместите следующее в ~ / .ssh / config :

Host C
ProxyCommand ssh -q -W IP_of_C:22 IP_of_B

Затем подключитесь к C из A с помощью 1-переходного ssh :

ssh -L 5000:127.0.0.1:5000 -R 5001:127.0.0.1:5001 C

На этот раз вам не нужно добавлять часть bind_address , потому что 127.0.0.1 используется для туннельного соединения на обоих концах.

-4
09.01.2018, 10:02
0 ответов

Теги

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