Как использовать SSH туннелирование для пересылки * службы *, такой как X11 или аутентификация? - PullRequest
0 голосов
/ 20 ноября 2011

Я хочу создать сервис, который позволит мне отображать документы и мультимедиа (например, PDF и JPEG), которые хранятся в файловой системе удаленного сервера, к которому я подключаюсь ssh.Пересылка X11 не обрезает это, потому что это слишком медленно.Вместо этого я хочу разработать протокол, который будет копировать файлы из удаленной системы по требованию, а затем отображать их.

Мой вопрос состоит из двух частей:

  1. Как получитьпорт на удаленной машине?Поскольку у меня может быть несколько подключений, я не могу просто использовать один известный порт - мне придется динамически выделять порт.

  2. Как только у меня будет порт, как мне связатьсяэто для отображения приложений на удаленной машине?Переадресация SSH X11 связывается путем установки переменной среды DISPLAY, а переадресация агента связывается путем установки переменной среды SSH_AUTH_SOCK.Возможно, я могу сделать что-то творческое с помощью удаленной команды?

Я приветствую любые идеи.

1 Ответ

1 голос
/ 20 ноября 2011

Вам действительно нужен удаленный порт? Если вы можете использовать ssh на удаленной машине, почему бы не запустить команду и не отправить данные обратно через команду ssh, как это делают rsync, Mercurial, Git и т. Д. SSH может обеспечить 8-битное чистое соединение, так что это похоже на соединение через сокет.

Чтобы было ясно, я предлагаю:

  1. SSH от пункта отправления до пункта назначения
  2. В сеансе SSH выполните команду в месте назначения, которая записывает данные в его стандартный вывод
  3. Стандартный вывод отправляется через соединение SSH от пункта назначения к источнику
  4. Сбор данных, которые поступают из стандартного вывода SSH на исходном компьютере

Тогда нет необходимости открывать конкретный порт ни в источнике, ни в пункте назначения.

Действительно, если вам действительно нужен «протокол, который будет копировать файлы из удаленной системы по требованию», как насчет SCP, SFTP или rsync через SSH?

...