基本上我希望能够做一些像teamviewer这样的事情,无论网络配置是什么,只要我的ssh服务器(机器A)和ssh客户端(机器B)都可以访问互联网(和一些第三服务器,机器C) ),我可以获得访问权限 - 这样做的原因是我希望能够移动机器 A,将其插入电源,让它自动连接到几个预配置的 wifi 网络之一(每个网络都是独一无二的/不同的) , 无需在网络上配置端口转发或类似配置,并且能够从机器 B 通过互联网登录
我怎样才能做到这一点?我不介意在带有静态 IP 地址的服务器上设置一些东西来帮助握手,但我也不介意 3rd 方服务器,如果已经存在的话(就像说 teamviewer 那样)
为清楚起见编辑:我有 3 台机器,AB 和 C
A 是一个无头树莓派,它将在随机位置打开/关闭,连接到预先配置的 wifi 网络
B 是我想要连接的带有适当显示器、键盘等的机器
C 是租用的 AWS 服务器,我有一个静态 IP 地址,可以从 B 可靠地通过 SSH 连接,并且可以安装任何必要的东西来帮助 B 连接到 A
Ant*_*hon 11
由于您在互联网上拥有机器 C,因此在那里创建一个名为 的特殊帐户sesame
,然后在 A 上创建一个带有公钥/私钥的帐户,您已将公钥从中复制到sesame
C上的帐户。
您现在可以从 A 登录到 C,但您不要这样做:
ssh -N -R 19930:localhost:22 sesame@yourserverC
Run Code Online (Sandbox Code Playgroud)
(您可能希望将此与 sleep 语句或例如 10 秒结合起来,并将其包装在无限循环中,以便在 WiFi 关闭导致连接中断时重新建立连接)
从机器 B,通常登录到您在 C 上拥有的任何帐户(可以是但不必是该sesame
帐户,我使用的是不同的帐户)。一旦你在 C 上,使用以下命令登录到 A:
ssh localhost -p 19930
Run Code Online (Sandbox Code Playgroud)
您当然可以使用与 19930 不同的数字。
如果 A 上的私钥不受密码保护,则可以运行ssh -N -R ...
from /etc/rc.local
。在这种情况下,请确保创建sesame
一个功能有限的单独帐户,以便当您的机器 A 受到威胁/被盗时,您的服务器 C 的风险是有限的。这也是为什么我建议使用单独的帐户从 B 到 C 的原因。
您实际上可以将sesame
in的登录 shell 设置/etc/passwd
为/bin/false
,因此您不能再使用该帐户进行登录。