Обратный SSH-туннель или TCP-туннель с использованием API служб удаленных рабочих столов - PullRequest
0 голосов
/ 10 июня 2018

Я делаю приложение, которое позволит управлять двунаправленным рабочим столом для моего собственного процесса обучения, мне не нравится, когда стандартные сеансы RDP блокируют компьютер конечных точек, когда идет сеанс RDP.

Настройка выглядит следующим образом:

  • SSH-сервер дома
  • Компьютер A дома.
  • Компьютер Bна конечной точке клиента.

Проблема заключается в том, что я не могу установить соединение со строкой соединения, предоставленной через RDP API.Я попытался перенаправить порт NAT UPNP, но исключил это как решение.

В настоящее время меня интересует создание обратного туннеля ssh и получение туннеля машины B к серверу ssh с этой точки.Компьютер A будет работать: ssh -l 3389: 127.0.0.1: 3389 учетные данные <- В настоящее время я делаю это через замазку.(Будет использовать библиотеку ssh, чтобы сделать это автоматически) </p>

Во-вторых, также возможно установить соединение через TCP:

Клиент B -> подключается к Клиенту A (Или сервер связывает ихи маршрутизирует данные) Клиент B генерирует строку RDP. Клиент B отправляет строку RDP клиенту A. Клиент A пытается подключиться к клиенту B в активном сеансе RDP.... Вот я врезался в стену.Поскольку сгенерированная строка соединения указывает на один общедоступный маршрутизируемый адрес (IPv6), а остальные являются временными адресами IPv6, частным адресом IPv4 и локальным адресом связи.

Компьютер B затем обратит туннель к серверу ssh:

ssh -R 6000: 127.0.0.1: 3389 учетные данные <- Также через putty для тестирования. </p>

Thisработает, если я должен открыть встроенное приложение удаленного рабочего стола и целевой

localhost: 6000

, но я хочу, чтобы клиент (компьютер B) сгенерировал строку подключения и отправил ее через TCP (яможет обработать это внутренне, но только что скопировал и вставил строку подключения вручную. Все еще только для тестирования.)

Вот строка подключения, разбитая на ее теги:

<E>
        <A KH="QHltZY9ISIdaMb3DNLVCVL8z22Q="

            KH2="sha256:cEv4C57cmofFr8bJsttCX+taX5sWxWmgvSjpWRpTZ8U="

            CE= 
                "MIIC4jCCAcqgAwIBAgIQSbu3zINwkqBB78x2uwORijANBgkqhkiG9w0BAQsFADAa&#xA;               MRgwFgYDVQQDEw9QcmltYXJ5LURlc2t0b3AwHhcNMTgwNjA4MDY1MDU1WhcNMTgx&#xA;
                 MjA4MDY1MDU1WjAaMRgwFgYDVQQDEw9QcmltYXJ5LURlc2t0b3AwggEiMA0GCSqG&#xA;
                 SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQ4tSRTPnCJuhCEJoOY8veHaFNg02Zmlg+&#xA;
                 3eXZCH65Rejxlk1cmARknhw5+MuXTvka+oApQeWtZQBTpoE/KD1vaHOnQS0yLc8P&#xA;
                 g6BvekNcoOY+6U9zOc1dP+EignJ8dHkSYc8Jr+k/OCfDTFoQZ/HVRUKHwd1ScNa2&#xA;
                 YczGSrhboCevbSQxSTtcsI7H4tL6d58fdlp+lPXkLCkzo29IQCqKT5q94geXLvDa&#xA;
                 t/U2rK6OcRFycEoNrwNPy7bwAnfIRTFDrLiQ8/6b28DrpPM7cJyM+K6cqsIOkkAd&#xA;
                 gXPJNNMMKT3ej1KDTZ+UiLq3c9plPP7SUm9xLx7rhEct+zTf8RUhAgMBAAGjJDAi&#xA;
                 MBMGA1UdJQQMMAoGCCsGAQUFBwMBMAsGA1UdDwQEAwIEMDANBgkqhkiG9w0BAQsF&#xA;
                 AAOCAQEApU2ec3ZgWDHQ4/gsXv/wlpLeIMbeIpZrf9NpgqV6Ig3SR8PMldEgfGfz&#xA;
                 XpB6C8mdoqCQglVWijr7M/QvZ9emrwNkfEDiKFuUHUETvdSD48jPJEwGtphhM58e&#xA;
                 07O+y8VP5vrOn0uR/VTKx8M9OMBehDhu9SC1H3/NGqRfbGDleCbTz1KvAFKOJrCH&#xA;
                 EvDHB+hyUFlapW/q/ZIMOefaYFYv/vnZvI6Sfy/NDKkSaOR0RBjrRA2dbmj6D0YU&#xA;
                 EuU1FYwqmTtW8jlmoz2WfaLEli8QLkGx6lw1ej891g5AvvdD1UWVAUfssIlMl1YL&#xA;
                 NSp6g8qJJrKtQvlCVUxwG4IH4ufb9w=="

                 ID="secretusername"
        />

         <C>
         <T ID="1" SID="0">
             <L P="55114" N="fe80::710b:8671:823c:7aab%17"/>
             <L P="55115" N="2604:282:3900:8eb0::af33"/>
             <L P="55117"N="2604:282:3900:8eb0:710b:8779:28c3:7aab"/>
             <L P="55117" N="2604:282:3900:8eb0:5dc5:b08e:de21:8bb8"/>
             <L P="55118" N="10.0.0.14"/>
        </T>
     </C>
 </E>

Может быть важно отметить, что многие из адресов, перечисленных между тегом , являются избыточными

Мой вопрос в основном: есть ли способ, которым я могу создать строку подключения, которая будет поддерживать обратнуюssh или разрешить TCP перенаправлять данные и предоставлять общедоступный адрес, или есть способ добавить собственный тег в строку подключения: это позволит подключиться кработа.

Приложение работает в локальных сетях без ошибок.Я искал ответы на конкретный вопрос, который я пытаюсь решить. Любые советы приветствуются, спасибо.

TLDR

Машина A:
ssh -L 3389: 127.0.0.1: 3389 учетные данные
Машина B:
ssh -R 6000: 127.0.0.1: 3389 учетные данные
SSHD:
Соединяет два туннеля

Машина A:Встроенная утилита Windows может предназначаться для localhost: 6000 и удаленно подключаться к машине B.

Проблемы: не хотите использовать встроенную утилиту.

Невозможно подключиться удаленно, используя строку подключения, сгенерированную машинойB. Так как он указывает только на локальный адрес устройства.

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

...