如何将 SSH 隧道命令变成 Windows 10 上的服务?
How can I make a SSH tunnel command into a service on Windows 10?
我在 powershell 中有一个非常简单的命令来启动 SSH 隧道:
ssh -N -L 28777:localhost:28778 myapp-db
使这项服务成为一项服务的最简单方法是什么,这样我就可以 运行:
start-service db-tunnel
等 Windows 10?我读过一篇关于这样做的 old article,它涉及到使用 C#,这对于这样一个简单的任务来说似乎太复杂了。
要将某些东西变成服务,您需要将脚本编译成可执行文件。这可以通过 PS2EXE 完成。
在 powershell 中创建一个函数,Start-DbTunnel
,并在启动时将该函数导入到您的 powershell 会话中,这对您同样有效。您可以通过在以下路径中加载函数来完成此操作:
$PSprofilePath\Microsoft.PowerShell_profile.ps1
或 ISE
$PSprofilePath\Microsoft.PowerShellISE_profile.ps1
在这些文件中,我有
$PSprofilePath = "C:\Users\cknutson\Documents\WindowsPowershell"
$items = Get-ChildItem "$PSprofilePath\functions"
#Set-Location "$PSprofilePath\functions"
$items | ForEach-Object {
. $_.FullName
}
Set-Location C:\
每次打开 powershell 主机时,任何包含函数或其他内容的脚本都会 运行。
不需要 PowerShell。这是一种方法:
在某处安装 Windows Server 2003 Resource Kit Tools 软件包并获取文件 instsrv.exe
和 srvany.exe
.
使用 srvany.exe
使用 Microsoft 帮助文章 137890.
[ 中的信息使用 ssh.exe
程序及其参数创建服务=50=]
例如:
instsrv "SSH Server" "C:\Program Files (x86)\Resource Kit Tools\srvany.exe"
当然,指定您想要的任何服务名称以及 srvany.exe
的路径和文件名。
接下来,使用注册表编辑器转到注册表中的 HKLM\SYSTEM\CurrentControlSet\Services\SSH Tunnel
(或您为服务命名的任何名称)并创建一个 Parameters
子项。在 Parameters
子项中创建一个 Application
值(REG_SZ
类型):
C:\Program Files (x86)\ssh\ssh.exe
(或其他 - 您的 ssh 可执行文件的路径和文件名)。
您还可以创建值 AppDirectory
(REG_SZ
) 来指定可执行文件的起始目录,并创建 AppParameters
(REG_SZ
) 来指定参数可执行文件;例如:
-N -L 28777:localhost:28778 myapp-db
如果您更喜欢 BenH 在他的评论中提到的 NSSM 工具并且可以使用第三方软件,则可以替代该工具。
我在 powershell 中有一个非常简单的命令来启动 SSH 隧道:
ssh -N -L 28777:localhost:28778 myapp-db
使这项服务成为一项服务的最简单方法是什么,这样我就可以 运行:
start-service db-tunnel
等 Windows 10?我读过一篇关于这样做的 old article,它涉及到使用 C#,这对于这样一个简单的任务来说似乎太复杂了。
要将某些东西变成服务,您需要将脚本编译成可执行文件。这可以通过 PS2EXE 完成。
在 powershell 中创建一个函数,Start-DbTunnel
,并在启动时将该函数导入到您的 powershell 会话中,这对您同样有效。您可以通过在以下路径中加载函数来完成此操作:
$PSprofilePath\Microsoft.PowerShell_profile.ps1
或 ISE
$PSprofilePath\Microsoft.PowerShellISE_profile.ps1
在这些文件中,我有
$PSprofilePath = "C:\Users\cknutson\Documents\WindowsPowershell"
$items = Get-ChildItem "$PSprofilePath\functions"
#Set-Location "$PSprofilePath\functions"
$items | ForEach-Object {
. $_.FullName
}
Set-Location C:\
每次打开 powershell 主机时,任何包含函数或其他内容的脚本都会 运行。
不需要 PowerShell。这是一种方法:
在某处安装 Windows Server 2003 Resource Kit Tools 软件包并获取文件
instsrv.exe
和srvany.exe
.使用
[ 中的信息使用srvany.exe
使用 Microsoft 帮助文章 137890.ssh.exe
程序及其参数创建服务=50=]
例如:
instsrv "SSH Server" "C:\Program Files (x86)\Resource Kit Tools\srvany.exe"
当然,指定您想要的任何服务名称以及 srvany.exe
的路径和文件名。
接下来,使用注册表编辑器转到注册表中的 HKLM\SYSTEM\CurrentControlSet\Services\SSH Tunnel
(或您为服务命名的任何名称)并创建一个 Parameters
子项。在 Parameters
子项中创建一个 Application
值(REG_SZ
类型):
C:\Program Files (x86)\ssh\ssh.exe
(或其他 - 您的 ssh 可执行文件的路径和文件名)。
您还可以创建值 AppDirectory
(REG_SZ
) 来指定可执行文件的起始目录,并创建 AppParameters
(REG_SZ
) 来指定参数可执行文件;例如:
-N -L 28777:localhost:28778 myapp-db
如果您更喜欢 BenH 在他的评论中提到的 NSSM 工具并且可以使用第三方软件,则可以替代该工具。