502 字
3 分钟
注册sshurl协议一键打开terminal

引言#

最近突然领会了一个导航网站(dashy)的妙用

除了可以放项目地址,编译 发布地址打开对应小程序之外还可以直接ssh连接到测试服务器;更可以改造脚本直达日志文件位置;让每天的班可以上的开开心心

我暂时没找到可以直接注册url协议的terminal,再加上xshell用起来还不错;因此决定支持ssh://root%40192.168.1.57:22这样的链接直达服务器的功能

解决方案#

注册ssh://这样的协议需要修改注册表;假如只用注册表,使用cmd或者powershell这样的脚本都会有黑屏弹窗的问题

只有vbs可以纯后台不弹窗启动应用;因此需要写两个文件:register-ssh-protocol.reg和ssh-handler.vbs

拆分后方便开发及调试;先给出我的文件:

register-ssh-protocol.reg

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\ssh]
@="URL:SSH Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\ssh\DefaultIcon]
@="cmd.exe,0"
[HKEY_CLASSES_ROOT\ssh\shell]
[HKEY_CLASSES_ROOT\ssh\shell\open]
[HKEY_CLASSES_ROOT\ssh\shell\open\command]
@="wscript \"D:\\Tools\\ssh-handler.vbs\" %1 "

ssh-handler.vbs

Terminal window
' xshell-handler.vbs
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit
' get url ssh://%USERPROFILE%/test.xsh)
rawUrl = objArgs(0)
' 1. replace xsh://
path = Replace(rawUrl, "ssh://", "")
' remove last /
If Right(path, 1) = "/" Then
path = Left(path, Len(path) - 1)
End If
' 2. decode
' path = Unescape(path)
path = Replace(path, "%20", " ")
path = Replace(path, "%40", "@")
path = Replace(path, "%3A", ":")
path = Replace(path, "%5C", "\")
path = Replace(path, "%22", """")
Set shell = CreateObject("WScript.Shell")
' 3. use enviroment
finalPath = shell.ExpandEnvironmentStrings(path)
' 4. Xshell 的实际程序路径 (请根据你的版本确认路径)
xshellExe = """C:\Program Files (x86)\NetSarang\Xshell 8\Xshell.exe"""
' WScript.Echo finalPath
' shell.Run """C:\Program Files (x86)\NetSarang\Xshell 8\Xshell.exe"" -url [email protected]"""
shell.Run xshellExe & """ -url """ & finalPath

补充说明#

  • powershell直接测试xshell的命令为:xshell -url [email protected],完整说明请见官方文档:Xshell Command Line Options

  • cmd中直接测试ssh-handler.vbs的命令为:wscript "D:\Tools\ssh-handler.vbs" ssh://root%40192.168.1.57:22

  • vbs中显示变量值用WScript.Echo finalPath

  • url中有部分关键字不能使用,因此需要转义(比如@符号就要用%40)

  • url通常以/结尾会导致传递给xshell的路径异常:Unable to resolve host ''C': Connection failed因此需要手动移除

xshell_unable_connect

参考资料#

注册sshurl协议一键打开terminal
https://blog.wangshuai.app/2026-01-10-register-ssh-url-link/
作者
王帅
发布于
2026-01-10
许可协议
CC BY-NC-SA 4.0