Windows OpenSSH 服务开通与修复
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_dde237c9/sshd-setup。
技能介绍
你在 Windows 上碰到的典型问题
远程连不上本机、WSL 或 CI 需要走 SSH,但 OpenSSH Server 要么没装、要么服务没起来,或者 capability 显示已安装却找不到 sshd.exe。管理员还要单独处理 22 端口防火墙 和 密钥文件路径,否则公钥写在用户目录 .ssh/authorized_keys 里也不会生效。
技能如何执行
语义触发后走一条 CHECK → INSTALL → FIREWALL → START → [KEY] → VERIFY 的 PowerShell 流程:
- CHECK:确认
sshd服务与sshd.exe是否存在 - INSTALL:优先
Add-WindowsCapability安装 OpenSSH.Server;若系统能力包状态与实际文件不一致,则从 GitHub 拉取OpenSSH-Win64.zip并执行install-sshd.ps1 - FIREWALL:创建或复用入站规则
OpenSSH-In(TCP 22) - START:
Set-Service设为自动启动并Start-Service sshd - 可选 KEY:检测密钥登录是否已可用;否则生成 ed25519 密钥对,写入
C:\ProgramData\ssh\administrators_authorized_keys并用icacls收紧权限后重启服务,用localhost验证 - VERIFY:
Get-NetTCPConnection -LocalPort 22确认监听
整条链路 幂等:已安装、已运行、密钥已生效的步骤会跳过,适合反复排查。
边界与注意
- 必须以 管理员 运行(脚本带
#Requires -RunAsAdministrator) - 密钥免密针对 当前管理员账户;管理员组公钥位置与 Linux 不同,不能只看用户目录
- 若无法加载
.ps1,需先调整 PowerShell 执行策略(如RemoteSigned) - PowerShell 下
ssh-keygen -N ""有参数解析问题,技能内通过cmd /c规避
使用场景
- 远程连公司 Windows 工作站时 22 端口不通,需要在本机检查 sshd 是否安装、是否在监听并启动服务。
- 新装的 Windows Server 要供 Ansible 或脚本通过 SSH 登录,需安装 OpenSSH Server、防火墙放行 22 并设自动启动。
- 可选功能里 OpenSSH 显示已安装,但系统里没有 sshd.exe,需要走 GitHub 离线包重新安装。
- 管理员账户要用公钥免密登录 Windows OpenSSH,需把密钥写到 ProgramData 并修正 icacls 权限后重启 sshd。
适合人员
- 维护 Windows 服务器、需要通过 SSH 远程执行命令与排障的企业运维工程师
- 在 Windows 开发主机上开通 OpenSSH、供笔记本或 WSL 密钥登录本地的后端或全栈开发者
- 做桌面或服务器基线加固、要统一检查防火墙 22 端口与 sshd 自启状态的 IT 实施与安全人员
- 接手他人配置的 Windows 机器、不熟悉管理员组 Match 规则与 authorized_keys 路径的系统管理员