从Windows作为后台进程的SSH隧道



在Windows服务器上,我们有一个可以工作的OpenSSH SSH隧道,可以连接到我们的MySQL数据库:

ssh -l <USER> -i <PUBLIC_KEY_FILE> -L 127.0.0.1:3306:localhost:3306 <SERVER_IP>

我们需要编写它的脚本:

  1. 将隧道设置为后台进程
  2. 在前台过程中做一些事情,包括但不限于将数据从数据库加载到本地Windows计算机
  3. 完成前台工作后,关闭后台ssh隧道/进程我们该怎么做

使用cmd/.bat,我们通过在带有start的单独cmd中启动ssh来实现前两点:https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/start

START ssh -l <USER> -i <PUBLIC_KEY_FILE> -L 127.0.0.1:3306:localhost:3306 <SERVER_IP> -T

然后我们可以完成我们的工作,但我们还没有想出如何关闭混凝土隧道,而不杀死所有正在运行的ssh.exe进程。我们不想杀死他们所有人。有办法吗?

然后我们考虑Powershell:

Start-Job -Name "RUN_SSH_TUNNEL_X1" -ScriptBlock {ssh...
...stuff...
Stop-Job -Name "RUN_SSH_TUNNEL_X1"

但这似乎不起作用,作业"RUN_SSH_TUNNEL_X1"似乎在启动后立即停止,因此隧道不会停止。有没有什么方法可以让工作继续进行,并在我们的东西部分完成后关闭它?

还是应该用其他方法来完成?NB!希望不必使用第三方工具,如Putty等

我们将隧道创建留在了bat文件中。

然后从Powershell检查running tasks run语句,以检查SSH隧道是否已创建/正在运行。如果没有,则调用隧道创建bat文件。

工作完成后,调用相同的SSH隧道任务检查,如果正在运行,则终止该任务。

最新更新