真的希望这里有人能指出我正确的方向,
预期结果:成功通过 SSH 连接到远程设备。
挑战/背景故事:我们在全国偏远地区都有设备,这些设备没有固定的公共 IP 地址(使用 GSM 作为其互联网突破)这些设备能够通过 SSH 进行突破。
我的想法是,关于维护这些设备,(如果可能的话)使用云中的服务器作为中间人,让这些设备创建某种到我们的中间人服务器的反向隧道,然后让我们作为管理员拦截它或进行其他操作那个效果。
再次总结一下,设备不能直接通过 ssh 连接,但可以突破。目标是能够从办公室访问他们的终端。一直在关注 mitmssh 但没有在这方面取得进展。服务器A(没有固定地址,无法直接通过SSH连接,但有突破)
服务器B(标准服务器,可用作中间人
服务器 C(美国管理员)
尝试了类似“ssh user@serverA -R serverB:12345:ServerA:22”的内容
这会创建隧道,但很难抓住该 SSH 连接。
答案1
在服务器 A 上,您应该自动运行(例如作为 systemd 服务,或任何您可以在那里使用的东西),例如
ssh userB@serverB -R serverC:1234:serverA:22
作为userA,其中服务器A上的用户A的公钥位于authorized_keys
服务器B上的用户B的文件中。
为了尝试这一点,我将使用服务器 A,可以轻松地通过其他方式进行本地访问,并在将其安装为服务之前直接运行该命令。
然后在服务器C上,你可以这样做
ssh userX@serverB -p 1234
其中 userX 是服务器 A 上的某个用户。
如果某些功能不起作用,请使用(多个)-v
详细标志ssh
进行调试。如有必要,您还可以将服务器 B 和服务器 A 上的 ssh 守护进程置于详细模式。
如果此验证因地址经过 NAT 等原因而不起作用,您还可以最初忽略serverC
突破连接,允许(暂时)任何人访问。