仅通过一个公共 IP 即可通过 SSH 连接多台计算机?

仅通过一个公共 IP 即可通过 SSH 连接多台计算机?

我面临以下困境。我发现自己越来越多地被当做社区里的“电脑专家”(尽管是有偿的),负责“修复”常见的“问题”。作为一名黑客,我曾考虑通过 SSH/VNC 为我的客户提供远程协助服务。从概念上讲,这很好,但有一些实施细节让我很头疼。

  1. 确定每个客户的路由器的 IP 地址。这通常可以使用动态 DNS 来完成,但我曾考虑编写一个小程序,将路由器的当前 IP 地址发送到我的服务器,这样我就可以随时掌握情况。当然,动态 DNS 更简单,但如果我使用外部服务,它可能会变得复杂。我是个吝啬鬼,所以支付的费用越少越好,而且为每个客户的路由器设置一个新帐户并不是理想的选择。以下是我的动态 DNS 选项:

    1. 我可以按月支付名称服务器托管费用,创建合理的域层次结构并实施动态 DNS。
    2. 我可以购买低规格的服务器和主机 BIND 并在本地完成所有操作,但如上所述。
    3. 我可以按月向客户收取(!?!)“动态 DNS 托管费”,并使用所得款项从 DynDNS.org 或其他地方支付一个不错的帐户。
  2. 支持路由器以外的多台计算机。为此,我也有选择:

    1. 尽可能实施 OpenVPN,并简单地使用远程 VPN 来访问计算机,就像它们是网络上的本地计算机一样。(这就是 VPN 的工作方式,对吧?我基本上会以另一个 IP 地址的形式出现在路由器上,并且可以完全访问网络中的所有机器,对吗?)
    2. 实施一些反向连接黑客让他们连接到我,然后让我与他们建立 SSH 连接。
    3. 令人厌恶的端口转发方式。这需要保存每个客户的数据库以及每个客户机器在路由器上用于 SSH 的端口号。真恶心。
  3. 能够远程支持笔记本电脑。假设我的客户在另一个州的咖啡店,出了点问题。由于上述许多解决方案都涉及基于路由器的解决方案,因此一切都将不复存在。能够提前做到这一点并不重要,因为这是一种极端情况,但仍然如此。

有人可以推荐最好的方法来:1. 找到每台机器的公共 IP 地址;2. 与其建立连接;3. 如果它们“漫游”的话,是否可能提供远程*远程服务?

答案1

使用时可以忽略许多问题TeamViewer。客户端只需启动程序并向您报告 ID(静态)和密码(临时);该程序负责绕过 NAT 并提供远程桌面和文件传输。SSH 没有其他选择,但 TeamViewer 显然还允许通过 VPN 进入客户端网络。(我不确定如果没有管理员/root,这是否可行。)

对于动态 DNS,您可以重用现有的“DynDNS 更新程序”工具,例如,伊纳丁– 它们可以指向任意服务器,并且它们都通过发出您可以记录的简单 HTTP 请求来工作。

对于“支持路由器以外的多台计算机”,想到的是 IPv6 – 如果您的 ISP 支持这一点...否则,如果内部地址发生变化或连接了新设备,VPN(您对它们的工作原理的看法是正确的)将更加可靠。

答案2

您是否查看过基于 Web 的服务,例如 logmein 或 gotomypc?我在帮助我父亲时使用 logmein,我相信他们确实有一款产品可能适合您的需求。

答案3

对于“客户端”端的 VNC(可能位于防火墙/路由器等后面),我认为您需要在您的终端设置一个具有监听功能的服务器。Raymond cc 撰写了一篇关于如何做到这一点的精彩文章:http://www.raymond.cc/blog/archives/2007/04/05/free-and-easy-remote-access-with-vnc-reverse-connections/

对于 SSH,反向连接可以像“nohup ssh -f -N -R 10000:localhost:22 username@your_side”这样执行,这将使 ssh 到 your_side:10000 最终到达您尝试支持的客户端。这需要您这边的用户名,当然您可以将其提供给您的客户端。例如,可以阅读更多详细信息http://www.vdomck.org/2005/11/reversing-ssh-connection.html

这两者都需要您试图支持的人员在最终做一些“启动”工作,但这通常(根据我的经验)是一个大问题。

相关内容