我正在尝试寻找一种可用于远程执行 Windows cmd 命令的解决方案。我知道 PSExec 是嵌入到 Windows 中的 PSTools 套件中的,但据我所知,它是为当计算机位于同一 LAN 上而不是外部时使用的(除非您在路由器上进行端口转发)。端口转发不是一种选择。
我在论坛上看到过一个潜在的解决方案,即在中间引入一个服务器,两台机器都会连接到该服务器,它将充当传递命令的隧道。这里的目标是使用类似 RDP 的这种设置,只是我不需要它的 GUI 部分,我会管理远程机器来检查哪些应用程序处于打开状态、它们运行了多长时间等。例如,当许多 Windows 机器不在 LAN 中时,系统管理员如何远程管理它们?
提前感谢您的任何建议和提示!
答案1
我知道 PSTools 套件中的 PSExec 是嵌入到 Windows 中的,但据我所知,它是为计算机位于同一 LAN 而不是外部时使用的(除非您在路由器上进行端口转发)。端口转发不是一种选择。
嗯,不,仅凭这一点并不能使它成为一个“LAN”工具。
当目的地位于 NAT 后面时,入站连接需要端口转发是正常的——同样的道理也适用于 SSH、HTTP 以及几乎所有其他协议例行公事通过互联网使用。
许多远程访问工具都遵循相同的模式,即客户端直接连接到服务器,无论是 PSExec、SSH、VNC、RDP、PS-Remoting 还是 Telnet。其中一些工具每天都在互联网上使用,但如果您无法配置端口转发,您也会很难使用它们。
(实际上,PSExec 更加面向 LAN 的原因是它使用了 Windows 中的 SMB 和 MS-RPC 服务,这些服务仍然被认为是不安全暴露在互联网上——还记得“Blaster”和“EternalBlue”吗?)
我在论坛上看到过一个潜在的解决方案,即在中间引入一个服务器,两台机器都会连接到该服务器,它将充当传递命令的隧道。这里的目标是使用类似 RDP 的这种设置,只是我不需要它的 GUI 部分,我会管理远程机器来检查哪些应用程序处于打开状态、它们运行了多长时间等。例如,当许多 Windows 机器不在 LAN 中时,系统管理员如何远程管理它们?
答案几乎总是某种 VPN。
例如,如果所有设备都在您的公司局域网中,但您在家工作,那么公司网络通常会托管一个可以从任何地方访问的 VPN 服务器(具有公共 IP 地址,或至少具有端口转发)。连接后,系统管理员可以像在本地一样访问整个局域网,从而允许使用 PSExec/RDP/SSH 和其他典型的管理工具。
如果你遇到相反的情况,情况也是如此——当设备分散且位于系统管理员无法控制的 NAT 后面时,这些设备同样可以使用 VPN 进行连接后退到他们的“基地”,然后他们就可以被联系到,就好像他们和系统管理员在同一个局域网中一样。
VPN 本质上并不是单向的。一旦隧道建立,它就完全能够承载从服务器端到客户端的连接,以及从客户端到服务器的连接,甚至客户端之间的连接。因此,假设您能够设置 VPN 服务器某处(甚至云/VPS 主机也可以),只需让您的设备自动连接到该中央服务器,您就完全绕过了 NAT 和端口转发问题。
话虽如此,各种 VPN产品确实有从通用(适用于站点到站点链接)到面向客户端的范围。显然,对于设备管理,您正在寻找支持自动连接(理想情况下是基于证书的凭据)并默认在拆分隧道模式下工作的产品。您甚至可能最终为设备和员工/系统管理员使用两种完全不同的 VPN 产品。
(如果设备是 Windows 计算机,则 OpenVPN 或或许尽管我还使用过 ZeroTier 和 Tinc,但 WireGuard 是我的首选。)