我正在制作一个应用程序,允许我自己的学习过程进行双向桌面控制,我不喜欢当RDP会话正在进行时标准RDP会话锁定 endpoints 计算机 .
The setup is as follows:
-
家中的SSH服务器
-
计算机A在家里 .
-
客户端 endpoints 的计算机B.
问题是我无法与通过RDP API提供的连接字符串 Build 连接 . 我尝试过NAT UPNP端口转发,但我已将此作为解决方案 .
我目前感兴趣的途径是创建一个反向ssh隧道,并让机器B隧道进入ssh服务器,从那时起计算机A将运行:ssh -l 3389:127.0.0.1:3389凭证< - 目前我是通过腻子这样做 . (将使用ssh库自动执行此操作)
其次,也可以通过TCP Build 连接:
客户端B - >连接到客户端A(或者服务器链接它们并路由数据)客户端B生成RDP字符串客户端B将RDP字符串发送到客户端A客户端A尝试连接到客户端B的活动RDP会话 . ..我在墙上撞了一下 . 由于生成的连接字符串指向一个可公共路由的地址(IPv6),其余为临时IPv6地址和私有IPv4地址以及链路本地地址 .
然后,计算机B将反向隧道进入ssh服务器:
ssh -R 6000:127.0.0.1:3389凭证< - 也通过putty进行测试 .
如果我要打开内置的远程桌面应用程序和目标,这是有效的
本地主机:6000
但我希望客户端(计算机B)生成一个连接字符串并通过TCP发送它(我可以在内部处理它,但只是手动复制粘贴连接字符串 . 仍然只是为了测试 . )
以下是分解为其标记的连接字符串:
<E>
<A KH="QHltZY9ISIdaMb3DNLVCVL8z22Q="
KH2="sha256:cEv4C57cmofFr8bJsttCX+taX5sWxWmgvSjpWRpTZ8U="
CE=
"MIIC4jCCAcqgAwIBAgIQSbu3zINwkqBB78x2uwORijANBgkqhkiG9w0BAQsFADAa
 MRgwFgYDVQQDEw9QcmltYXJ5LURlc2t0b3AwHhcNMTgwNjA4MDY1MDU1WhcNMTgx

MjA4MDY1MDU1WjAaMRgwFgYDVQQDEw9QcmltYXJ5LURlc2t0b3AwggEiMA0GCSqG

SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQ4tSRTPnCJuhCEJoOY8veHaFNg02Zmlg+

3eXZCH65Rejxlk1cmARknhw5+MuXTvka+oApQeWtZQBTpoE/KD1vaHOnQS0yLc8P

g6BvekNcoOY+6U9zOc1dP+EignJ8dHkSYc8Jr+k/OCfDTFoQZ/HVRUKHwd1ScNa2

YczGSrhboCevbSQxSTtcsI7H4tL6d58fdlp+lPXkLCkzo29IQCqKT5q94geXLvDa

t/U2rK6OcRFycEoNrwNPy7bwAnfIRTFDrLiQ8/6b28DrpPM7cJyM+K6cqsIOkkAd

gXPJNNMMKT3ej1KDTZ+UiLq3c9plPP7SUm9xLx7rhEct+zTf8RUhAgMBAAGjJDAi

MBMGA1UdJQQMMAoGCCsGAQUFBwMBMAsGA1UdDwQEAwIEMDANBgkqhkiG9w0BAQsF

AAOCAQEApU2ec3ZgWDHQ4/gsXv/wlpLeIMbeIpZrf9NpgqV6Ig3SR8PMldEgfGfz

XpB6C8mdoqCQglVWijr7M/QvZ9emrwNkfEDiKFuUHUETvdSD48jPJEwGtphhM58e

07O+y8VP5vrOn0uR/VTKx8M9OMBehDhu9SC1H3/NGqRfbGDleCbTz1KvAFKOJrCH

EvDHB+hyUFlapW/q/ZIMOefaYFYv/vnZvI6Sfy/NDKkSaOR0RBjrRA2dbmj6D0YU

EuU1FYwqmTtW8jlmoz2WfaLEli8QLkGx6lw1ej891g5AvvdD1UWVAUfssIlMl1YL

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>
值得注意的是,<T>标签之间列出的许多地址都是多余的
我的问题主要是:有没有办法可以生成一个支持反向ssh的连接字符串,或者允许TCP重新路由数据并提供可公开访问的地址,或者我是否可以将自己的标记添加到连接中string:允许连接工作 .
该应用程序无错误地在本地网络上运行 . 我已经搜索了我要解决的具体问题的答案,感谢任何建议,谢谢 .
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生成的连接字符串远程连接 . 因为它只指向设备的本地地址 .
那么,如何生成支持可公共路由地址的连接字符串,而不需要端口转发 .