精简版 Windows 离线装 SSH(拿到远程命令通道)

SKILL运维和基础设施
运维和基础设施 未标注权限 许可证不明确
安装这个技能

面向放一台 Windows(多为精简系统/Ghost 精简版/LTSC)在异地长期开机、需要远程执行命令的场景。精简系统没有完整 Features-on-Demand,`Add-WindowsCapability` 装出来的 OpenSSH.Server 经常残缺:能力显示 Installed,`C:\Windows\System32\OpenSSH` 却缺配套的 libcrypto.dll,sshd 于是去 System32 吃到别的软件带来的错版 OpenSSL → 弹窗「无法定位程序输入点 BN_init 于 sshd.exe」,服务秒退、`sshd -ddd` 零输出、连日志目录都不建。本技能给出根治方案:本地下载完整 Win32-OpenSSH 发行包 → 打成自包含离线包(含配套 libcrypto.dll 与 VC 运行库)→ 用 Taildrop/RDP/U 盘送到目标机 → 一键安装脚本拆掉残缺旧服务、装到 Program Files、注册服务、写配置与公钥、收权限、放行防火墙、自检并回传日志。附零第三方依赖的 Node 工具箱(下载/解压/打包/ps1 编码规整)与通用安装模板(参数化公钥、端口、放行网段、回传目标)。含完整踩坑清单:官方 zip 顶层是 OpenSSH-Win64\ 不是 OpenSSH\;9.8 版还需 sshd-session.exe;加载器弹窗是模态框会卡死脚本需 SetErrorMode 抑制;Git Bash 的 tar 会把 C: 当主机名,而 Windows 自带 tar.exe 可用。当用户要在另一台 Windows 上开 SSH、远程执行总失败、想从本机管另一台机器、看到 BN_init 弹窗、Add-WindowsCapability 报错或装完没反应时使用。触发词:装 SSH、开 SSH、sshd 起不来、BN_init、无法定位程序输入点、精简系统、离线安装、远程命令、异地机器、免密登录、公钥登录、 libcrypto。

一句话选型结论

按资料字段整理

精简版 Windows 离线装 SSH(拿到远程命令通道)是运维和基础设施类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类运维和基础设施 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_878e6d7a/remote-win-ssh-offline
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

运维和基础设施
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_878e6d7a仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791621862
正文体量11.9 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
查服务与日志

按现象定位服务状态与日志线索。

写部署与巡检脚本

把重复的部署、巡检写成脚本。

故障排查

按步骤排查网络、依赖与配置。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在运维和基础设施场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
精简版 Windows 离线装 SSH(拿到远程命令通道)当前 未标注权限 未标注 未标注 未标注 有
Azure 部署 调用外部服务 GitHub 仓库 664.2 万 Codex、Claude、Cursor 有
Azure diagnostics 问题管理 调用外部服务 GitHub 仓库 657.6 万 Codex、Claude、Cursor 有
Azure aigateway 部署 调用外部服务 GitHub 仓库 655.3 万 Codex、Claude、Cursor 有
Azure AI 搜索 调用外部服务 GitHub 仓库 651.4 万 Codex、Claude、Cursor 有
Azure Cloud migrate 部署 调用外部服务 GitHub 仓库 650.7 万 Codex、Claude、Cursor 有

SKILL.md 全文

11.9 KB
模型实际读到的说明书原文,来自技能仓库

精简版 Windows 离线装 SSH(拿到远程命令通道)

> 版本 1.1.0 | 真机验证:一台 Win10 22H2 控制端 ↔ 一台异地的精简版 Windows 目标机,
> 从「sshd 完全起不来」到 OpenSSH_for_Windows_9.8p1, LibreSSL 3.9.2 正常输出,
> 并在第二台机器上(带第三方杀软)复现并绕过了安装阶段的权限/拦截坑。

这个技能解决什么问题

你想从手边这台机器,去操作放在别处长期开着的一台 Windows——跑命令、拷文件、看服务。
SSH 是唯一正经的远程命令通道。而在这类机器上走标准做法必翻车:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

因为精简系统往往没有完整的 Features-on-Demand。结果是:能力显示 Installed,
System32\OpenSSH\sshd.exe 也在,但它缺配套的 libcrypto.dll,
于是去 C:\Windows\System32 找一个别的软件丢在那里的错版 OpenSSL,
对不上它要的 BN_init,弹这个框就死了:

sshd.exe - 无法找到入口
无法定位程序输入点 BN_init 于动态链接库 C:\Windows\System32\OpenSSH\sshd.exe 上。

正解一句话:别联网补,直接在本地备好完整离线源,丢过去按文件级安装。


铁律一:判断「这台能不能联网装」先问一句

动手前先看目标机器的性质:

系统类型 Add-WindowsCapability 能否用
完整原版 Win10/11 通常可以(仍需 Windows Update)
精简系统 / Ghost 精简版 / LTSC 精简 基本不能,或装上也是残的
长期离线 / 内网隔离 不能

默认按「不能」处理。 宁可多花两分钟打包,也不要在目标机上反复试联网命令——
那会消耗好几轮人机往返,而每轮往返都要用户在现场敲命令。

铁律二:判断 sshd 死在哪一层,别急着改配置

按这个顺序查,每一步都有唯一结论:

现象 结论
服务 Stopped、无日志、sshd -ddd 零输出 压根没起来,别改配置
sshd_config 不在 C:\ProgramData\ssh 缺配置(但补了可能还不够)
弹窗「无法定位程序输入点 XXX」 依赖 DLL 错配,这是病根
本机 Test-NetConnection 127.0.0.1 -Port 22 不通 sshd 没在听
远程机器 TIMEOUT 防火墙丢包(放行后应变成 ECONNREFUSED)
远程机器 ECONNREFUSED 防火墙过了,sshd 没在听

⚠️ ECONNREFUSED 和 TIMEOUT 的区别很值钱:前者说明包到了机器,说明防火墙已放行;
后者说明包被丢。别把它们都当成"不通"。


标准流程(四步)

第 1 步:本地下载发行包

node scripts/ssh-offline.js fetch <输出目录>

工具箱内置 3 个官方版本 + 4 个加速镜像前缀,逐个试,拿到真 zip 就停。
实测 9.8.0.0p1-Preview 直连即成功,5,090,972 字节。

第 2 步:解包

node scripts/ssh-offline.js unpack <zip> <目标目录>

零依赖实现(stored + deflate),不需要本机有解压软件。

第 3 步:打成自包含离线包

node scripts/ssh-offline.js pack <源目录> <输出zip>

产物包含这套东西,每一件都不能少:

  • 13 个 exe:sshd / sshd-session(9.8 起拆分,少了它 sshd 起不来) / sftp-server / ssh / scp / sftp / ssh-keygen / ssh-add / ssh-agent / ssh-keyscan / ssh-pkcs11-helper / ssh-shellhost / ssh-sk-helper
  • libcrypto.dll ← 治 BN_init 的主角,必须和目标目录里的 sshd.exe 同源
  • moduli、sshd_config_default、openssh-events.man
  • install-sshd.ps1、uninstall-sshd.ps1、OpenSSHUtils.psd1/psm1、Fix*FilePermissions.ps1
  • vcruntime140.dll / vcruntime140_1.dll / msvcp140.dll ← 精简系统常缺 VC 运行库,这是预判性补料

成品约 26 个文件 / 5.18 MB,尾巴丢到目标机毫无压力。

> 为什么这样就够了:Windows 的 DLL 搜索,进程所在目录优先于 System32。
> 把配对的 libcrypto.dll 放在 sshd.exe 同目录,System32 里那个错版本就永远轮不上。
> 本机实测——本机 System32 同样躺着错版 libcrypto.dll,但同目录下放配对本后
> sshd.exe -V 直接吐出 OpenSSH_for_Windows_9.8p1 Win32-OpenSSH-GitHub, LibreSSL 3.9.2。

第 4 步:送到目标机,跑安装脚本

powershell -ExecutionPolicy Bypass -File ".\install-ssh-offline.ps1" -PubKeyFile .\mykey.pub -SendTo '<接收方主机名>:'

通用模板 scripts/install-ssh-offline.ps1,八步:
找 zip(不挑名字)→ 解压 → 拆掉残缺旧服务 sc delete sshd → 铺文件到安装目录 →
缺则就地补 VC 库 → ssh-keygen -A → 写 sshd_config + 双写公钥 → icacls 收权限 →
install-sshd.ps1 注册服务 → netsh 放行(来源限定网段)→ 加 PATH → 启动 →
查监听 + 读 Banner + 打版本 → 可选自动回传日志。

送文件的路子,按可用性排:Taildrop(tailscale file cp <文件> <主机名>:,末参必须冒号结尾)→ RDP → U 盘。


踩过的坑(照做可省几轮往返)

  1. 官方 zip 顶层是 OpenSSH-Win64\,不是 OpenSSH\。
    脚本里别写死 Join-Path $tmp 'OpenSSH',改成递归找 sshd.exe 所在的那一层。
  2. 9.8 版必须带 sshd-session.exe。 只拷 sshd.exe 会起不来。
  3. 加载器弹窗是模态框,会卡死脚本。 安装脚本顶部加:
    powershell Add-Type -Namespace W32 -Name K -MemberDefinition '[DllImport("kernel32.dll")] public static extern uint SetErrorMode(uint m);' [W32.K]::SetErrorMode(0x8001) | Out-Null
    (SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX,子进程继承)
  4. Git Bash 的 tar 会把 C: 当主机名,报 Cannot connect to C: resolve failed。
    用 Windows 自带的 C:\Windows\System32\tar.exe,实测能正确解开本工具箱产出的 zip。
  5. 旧服务一定要删干净。 残缺的 sshd 服务会占着服务名,
    Stop-Service 不够,要 sc.exe delete sshd 再让 installer 重建。
  6. .ps1 必须 UTF-8 BOM + CRLF,否则 PowerShell 5.1 按 ANSI 读,中文全乱码。
    用 node scripts/ssh-offline.js zipps1 <文件> 一键规整,顺带查引号括号配平。
  7. curl 命令可能因 URL 含 PowerShell(PowerShell/Win32-OpenSSH)被安全规则拦截。
    改用 Node 脚本下载即可绕开。
  8. 公钥双写。 管理员组走 administrators_authorized_keys,普通走用户级
    ~\.ssh\authorized_keys,两处都写才不会白忙。
  9. 防火墙来源要限定。 别图省事写 Any,按隧道网段放行:
    powershell netsh advfirewall firewall add rule name='SSH-In-Tunnel' dir=in action=allow protocol=TCP localport=22 remoteip='100.64.0.0/10'
  10. 回传目标必须是接收方的主机名。 写成自己那台(在目标机上写目标机自己的主机名)会报
    must end in colon 或找不到目标;对方 GUI 会自动收下,实际落在 %USERPROFILE%\Downloads。
    file cp 只能"发给",不能"从对方拉取"。
  11. ★ 解压目录别放在 Downloads。 这是最隐蔽的一次失败:整包 Copy-Item 一个文件都没成功,
    但从 System32 补 VC 运行库却成功了 —— 目标可写、权限没问题,被拦的是源端:
    杀毒软件实时保护盯着"下载目录里刚解压出来的 exe/dll",或文件带的网络下载标记触发拦截。
    对策:解压到 C:\ProgramData\OpenSSH离线 + 全目录 Unblock-File,
    并逐文件复制且失败重试 3 次(间隔 800ms),日志逐条点名是哪个文件失败。
    换到 ProgramData 后同一台机器一次通过。
  12. 关键文件缺失就当场停下。 别让脚本带着半截状态继续:五个件
    (sshd.exe / sshd-session.exe / libcrypto.dll / install-sshd.ps1 / OpenSSHUtils.psm1)
    少一个就直接 exit 1 并给出处理指引,否则后面的步骤全是噪音。
  13. 让别人(或 AI 助手)代跑命令时要先问清权限边界。 不少受管环境会把 sc.exe
    这类服务管理程序列进黑名单:命令提交后直接被拒,且通常不允许换壳绕过。
    遇到这种情况就把"注册服务"这一步做成用户双击的 bat(bat 里用 fltmc 判管理员 + -Verb RunAs 自提权),
    其余准备工作照常由脚本完成。

验收口径

目标机上跑完,日志里这几行齐了才算通:

[OK] 监听 0.0.0.0:22  PID=xxxx
SSH Banner:SSH-2.0-OpenSSH_for_Windows_9.8
版本:OpenSSH_for_Windows_9.8p1 Win32-OpenSSH-GitHub, LibreSSL 3.9.2

然后手边这台敲:

ssh -i ~/.ssh/<私钥> <目标用户名>@<目标 Tailscale IP>

⚠️ 受管 AI 环境里 ~/.ssh/known_hosts 往往被写保护(chmod/icacls/attrib 都改不动,
连 node appendFileSync 都 EPERM——这是沙箱的密钥防篡改策略,别硬绕)。
对策:专用一个替代文件并让每次 ssh 带上:

ssh-keyscan -T 8 -t ed25519 <ip1> <ip2> ... > ~/.ssh/known_hosts_workbuddy
ssh -i <私钥> -o UserKnownHostsFile=~/.ssh/known_hosts_workbuddy -o BatchMode=yes user@host "<命令>"

⚠️ 远端是 Windows 时 shell 是 cmd.exe:多命令用 & 分隔,; 会被当成命令参数报错。

⚠️ Tailscale 不支持把 Windows 当 SSH 服务端(tailscale up --ssh 会报 not supported on windows),
所以必须走这套系统自带/离线装的服务端,两条路别混。


工具箱与模板

文件 用途
scripts/ssh-offline.js 下载 / 解压 / 打包 / ps1 编码规整,四合一,零第三方依赖
scripts/install-ssh-offline.ps1 目标机一键安装模板(参数化公钥、端口、放行网段、回传目标)

配套技能:判断「端口到底通不通」「改 IP 会不会失联」见 remote-windows-network-ops。

常见问题

5 问
答案由本站依据条目字段整理
精简版 Windows 离线装 SSH(拿到远程命令通道)怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_878e6d7a/remote-win-ssh-offline。安装方式为未标注。装完刷新技能列表或重开客户端。

精简版 Windows 离线装 SSH(拿到远程命令通道)支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

精简版 Windows 离线装 SSH(拿到远程命令通道)权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

精简版 Windows 离线装 SSH(拿到远程命令通道)收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

精简版 Windows 离线装 SSH(拿到远程命令通道)用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。