Я видел здесь способ сделать два прыжка SSH

ssh -L 9998: хост2: 22 -N хост1
ssh -L 9999: локальный хост: 1234 -N -p 9998 локальный хост

Я думаю, что понимаю, что делает одна строка, но не то, как они работают вместе. Можете ли вы продолжать делать это, чтобы иметь туннели в туннелях для большого количества прыжков? Будет ли это так?

SSH -L 9997: хост3: 22 -N хост2
ssh -L 9998: хост2: 22 -N хост1
ssh -L 9999: локальный хост: 1234 -N -p 9998 локальный хост

1 ответ1

4

Это зависит от того, что вы пытаетесь переслать через SSH. Ака, что вы пытаетесь сделать.

-L lport:host:hport делает так, что если вы подключаетесь к lport на вашем начальном хосте, вы подключаетесь к hport на хосте.

Так скажи, что ты на hostA . и вы хотите получить доступ к http (порт 80) на hostD который недоступен, кроме hostC который доступен только для hostB и который доступен для вашего начального hostA .

Вы можете запустить (из hostA):

ssh -L 8080: локальный хост: 8081 hostB

затем на этом hostB запустите:

ssh -L 8081: локальный хост: 8082 hostC

затем на этом hostC запустите:

ssh -L 8082:localhost:80 hostD

Затем вы можете (на hostA) получить доступ к localhost:8080 и подключиться к порту 80 hostD .

Примечание: вы можете использовать один и тот же 8080 на всех, так как этот порт используется только один раз для каждой машины. Я просто увеличил номера портов каждого соединения, чтобы лучше показать корреляции между портами.

Еще одна вещь, которую нужно иметь в виду, это то, что хост (между двумя: s) находится в контексте машины, на которую вы работаете. поэтому, если hostC имеет прямой доступ к порту 80 hostD , вы могли бы вместо этого сделать следующее:

Вы можете запустить (из hostA):

ssh -L 8080: локальный хост: 8081 hostB

затем на этом hostB запустите:

ssh -L 8081:hostD:80 hostC

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .