2015-07-02 2 views
4

Есть что-то, что я пытаюсь выполнить с помощью SSH-туннелирования, но я попытался выполнить поиск в Google SSH-туннелировании и нашел обсуждения по различным сценариям, но не по моему сценарию.Использование туннеля SSH для приема входящих соединений

Я работаю на компьютере A. У меня есть SSH-доступ к компьютеру B. Я хочу, чтобы компьютер B запускал программу X, которая должна подключаться к порту 40000 на компьютере A. Проблема в том, что компьютер B имеет драконовские брандмауэры, применяемые к нему что я не хочу изменять. Я хочу использовать мою способность легко подключаться к SSH с компьютера A на компьютер B, чтобы сделать возможным соединение от B до A.

Это то, что я предполагаю: программа Y, которую я запускаю на компьютере A, который подключается к компьютеру B SSH, а затем прослушивает на компьютере B соединения с портом 40000 и пересылает их через SSH соединения с портом 40000 на компьютере A. Затем я настраиваю программу X на компьютере B, чтобы попытаться подключиться к порту 40000 на компьютере B, а затем он фактически подключается к порту 40000 на компьютере A.

Есть ли существующая программа/SSH рецепт, который делает это?

+0

Этот вопрос может иметь некоторые полезные ссылки и информацию: http://unix.stackexchange.com/questions/46235/how-does -reverse-ssh-tunneling-work –

ответ

0

Я предполагаю, что вы ищете опцию -R к SSH:

-R [bind_address:]port:host:hostport 
     Specifies that the given port on the remote (server) host is to be 
     forwarded to the given host and port on the local side. This works 
     by allocating a socket to listen to port on the remote side, and 
     whenever a connection is made to this port, the connection is for- 
     warded over the secure channel, and a connection is made to host 
     port hostport from the local machine. 
     [...] 
+0

Это сработало отлично! Последующий вопрос: я хочу создать туннели для двух наборов портов. Нужно ли мне запускать две команды SSH? Я пробовал это: 'ssh -R 40000: localhost: 40000 -R 40001: localhost: 40001 my_host', но это не сработало. Любой способ сделать это с помощью одной команды SSH? –