Установите соединение SSH между двумя изолированными машинами с помощью третьей системы

Я хотел бы сделать следующее с Python:

  1. Компьютер 1 запускает SSH-сервер (вероятно, используя твисты или paramiko)
  2. Компьютер 1 подключается к Серверу 1 (бездействующее соединение)
  3. Компьютер 2 подключается к серверу 1
  4. Сервер 1 перенаправляет соединение с компьютера 2 на компьютер 1 (соединение больше не простаивает)
  5. Компьютер 1 перенаправляет соединение Сервера 1 на прослушиваемый порт SSH (на компьютере 1).

В результате компьютер 2 теперь имеет сеанс SSH с компьютером 1, почти как если бы компьютер 2 начал обычный сеанс SSH (но с IP-адресом сервера 1 вместо компьютера 1)

Мне это нужно, потому что я не могу перенаправить порт в сети компьютера 1 (маршрутизатор этого не поддерживает).


person FurryHead    schedule 13.01.2011    source источник
comment
Да, и я забыл добавить, что Computer1 — это машина с Windows, Computer2 — это машина с Linux. Я могу использовать «ssh» на компьютере 2, но сервер на компьютере 1 должен быть python.   -  person FurryHead    schedule 14.01.2011


Ответы (2)


Я бы использовал ssh для создания удаленного туннеля (-R) от сервера к локальной системе. Если вы настаиваете на том, чтобы сделать это с помощью Python, то есть модуль subprocess.

person Ignacio Vazquez-Abrams    schedule 13.01.2011
comment
Какая локальная система? Компьютер1 или Компьютер2? :\ Я посмотрю переключатель -R - person FurryHead; 14.01.2011
comment
Локальная система — Computer1. ssh -R someport:localhost:22 someuser@Server1 - person Ignacio Vazquez-Abrams; 14.01.2011
comment
О, чувак, это опрятно! Хотел бы я сделать это с помощью Python :\ (просто прочитайте справочные страницы для ssh -R). Однако локальный системный сервер должен быть на python - нет доступа для установки ssh. - person FurryHead; 14.01.2011
comment
Twisted Conch поддерживает эту функцию SSH. - person Jean-Paul Calderone; 14.01.2011
comment
Да, я изучал это последние ~ 15 минут. Однако я не могу найти никаких примеров, поэтому я все еще читаю. Если вы знаете какие-либо примеры, не могли бы вы дать ссылку на них, пожалуйста? :) - person FurryHead; 14.01.2011

Я узнал, как это сделать, используя пример из скрученного (трудно найти) примера раковины @ http://twistedmatrix.com/trac/browser/trunk/twisted/conch/scripts/conch.py.

Я смогу извлечь из этого то, что мне нужно. Спасибо!!!!

person FurryHead    schedule 14.01.2011