Windows PC(NAT下)和Linux服务器之间的可靠反向端口转发

Windows PC(NAT下)和Linux服务器之间的可靠反向端口转发

我有以下拓扑:

  • 具有静态 IP 的 Linux 服务器(Ubuntu 20.04)
  • NAT 下的 Windows 服务器没有将端口转发到此机器的选项

我需要从我的 Linux 服务器安全访问 Windows 服务器的端口。

目前,我已经plink.exe使用nssm工具将其包装到 Windows 服务中,配置为反向代理转发,并且通常它可以正常工作 - 但plink.exe似乎没有保持活动设置,而且非常不可靠,连接每天都会断开,我必须重新启动服务。也没有办法自定义服务以nssm.exe进行任何类型的“健康检查”和重新启动逻辑。

我正在考虑用 golang 编写一个非常简单的工具,它将观察连接并在丢失连接时重新启动它,但它看起来有点奇怪,可能过于复杂,也许我遗漏了一些东西,我想知道是否有更简单、更可靠的方法来完成这种任务?

另外,我正在考虑msys2在 Windows PC 上安装并尝试使用 openssh 客户端而不是 plink,但我不确定最终是否能将其包装为服务。

答案1

使用 Plink非交互式SSH 会话(又名“命令”)用于在远程 Linux 机器上执行,以实现自动化。Plink 绝不是持久的。

如果我理解正确的话,您的 Windows 计算机正在执行 NAT,并且可从您的连接源访问。并且您无法启用端口转发,如下所示:

netsh interface portproxy add v4tov4 listenport=22 listenaddress=<WAN IP> connectport=22 connectaddress=<DESTINATION IP>

如果是这种情况,我建议在 Windows 机器上设置 SSH 服务器并使用SSH 隧道特征。

相关内容