Переадресация (туннелирование) портов SSH в Linux - PullRequest
6 голосов
/ 10 ноября 2011

У меня есть конкретный сценарий, который я хочу решить. В настоящее время я подключаюсь к хосту через переадресацию портов:

 laptop -> gateway -> remote_server_1

и другой хост:

 laptop -> remote_server_2

с паролем, работающим на обоих. Ни один из удаленных серверов не виден внешнему миру. Сейчас я запускаю службу на remote_server_2, к которой я хотел бы иметь доступ к remote_server_1. Я предполагаю, что должен настроить обратную переадресацию портов с remote_server_1 на свой ноутбук, а затем на remote_server_2, но я не уверен, как это сделать. Кто-нибудь сталкивался с такой ситуацией раньше?

Edit: Полное решение на случай, если кому-то еще понадобится:

mylaptop$ ssh -L 3001:localhost:3000 server_2
server_2$ netcat -l 3000

Затем настройте туннель через gateway на server_1:

ssh -t -t -L 3003:server_1:22 gateway

Затем получите к нему доступ server_1:

ssh -R 3002:localhost:3001 -p3003 localhost
echo "bar" | nc localhost 3002`

и эй престо server_2 показывает bar: -)

1 Ответ

4 голосов
/ 10 ноября 2011

Вы должны сделать именно так, как вы описали. Настройте сервер на server_2.

mylaptop$ ssh -L 3001:localhost:3000 server_2
server_2$ netcat -l 3000

Тогда доступ к нему из server_1.

mylaptop$ ssh -R 3002:localhost:3001 server_1
server_1$ echo "foo" | netcat localhost 3002

server_2 покажет foo.

...