【Win11 | SSH】从零到一:Windows 11 下OpenSSH服务端安装与远程访问配置全攻略
1. 为什么要在Windows 11上搭建SSH服务器如果你经常需要在不同设备之间切换工作环境比如用Mac笔记本远程连接Windows台式机调试代码或者从Linux服务器传输文件到本地Windows电脑那么把Windows 11配置成SSH服务器会非常实用。想象一下你躺在沙发上用iPad就能安全访问书房里的Windows主机所有操作就像坐在实体机器前一样流畅。OpenSSH是微软官方推荐的SSH协议实现方案从Windows 10 1809版本开始就被内置在系统中。相比第三方工具它有三大天然优势系统级集成无需额外安装软件通过PowerShell就能完成所有配置企业级安全采用军事级的加密算法比传统远程桌面更安全跨平台兼容Linux/Mac/Android等设备都能无缝连接我去年帮一个游戏开发团队搭建测试环境时就深有体会。他们需要在Windows主机上编译Unity项目但开发者清一色都在用MacBook。通过配置OpenSSH服务端现在他们可以直接在Mac终端里ssh win-dev01连过来操作连文件传输都用scp命令搞定效率提升了至少三倍。2. 安装前的必要检查2.1 确认系统版本按下WinR输入winver你会看到类似这样的信息版本 Windows 11 专业版 版本 22H2 操作系统版本 22621.1555重点确认版本号不低于21H2内部版本号22000这是支持完整OpenSSH功能的最低要求。如果版本太旧建议先通过Windows Update升级系统。2.2 检查现有SSH组件以管理员身份打开PowerShell右键开始菜单选择运行Get-WindowsCapability -Online | Where-Object Name -like OpenSSH*正常应该看到类似输出Name : OpenSSH.Client~~~~0.0.1.0 State : Installed Name : OpenSSH.Server~~~~0.0.1.0 State : NotPresent这表示客户端已安装但服务端未安装。如果两者都是NotPresent说明你的系统可能被精简过。3. 两种安装方式详解3.1 图形界面安装推荐新手右键开始菜单 → 选择设置 → 点击应用 → 选择可选功能点击查看功能按钮 → 搜索框输入OpenSSH勾选OpenSSH客户端通常已安装OpenSSH服务器点击下一步完成安装安装完成后在服务管理器中可以看到新增了两个服务OpenSSH SSH Server (sshd)OpenSSH Authentication Agent3.2 PowerShell命令安装高效首选如果你习惯命令行这段代码可以一键完成所有操作# 安装服务端组件 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # 启动SSH服务 Start-Service sshd # 设置开机自启 Set-Service -Name sshd -StartupType Automatic我第一次用这个命令时遇到了报错Add-WindowsCapability : 请求的操作需要提升解决方法很简单一定要用管理员权限运行PowerShell右键开始菜单选择终端(管理员)就能解决。4. 防火墙配置关键步骤4.1 自动创建防火墙规则正常情况下安装程序会自动添加规则但我们可以手动确认if (!(Get-NetFirewallRule -Name OpenSSH-Server-In-TCP -ErrorAction SilentlyContinue)) { New-NetFirewallRule -Name OpenSSH-Server-In-TCP -DisplayName OpenSSH Server (sshd) -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 }这个命令会允许所有设备通过22端口连接你的SSH服务。如果只想允许内网访问可以加上-RemoteAddress 192.168.1.0/24参数。4.2 端口冲突排查有次我给客户部署时发现SSH连不上后来发现是Windows自带的Telnet服务占用了22端口。解决方法# 查看端口占用情况 netstat -ano | findstr :22 # 如果被其他进程占用可以修改SSH端口 notepad C:\ProgramData\ssh\sshd_config找到#Port 22这行去掉注释并修改为其他端口比如2222保存后重启服务Restart-Service sshd5. 首次连接测试与故障排除5.1 本地回环测试在PowerShell中输入ssh $env:USERNAMElocalhost第一次连接会看到安全提示The authenticity of host localhost (::1) cant be established. ECDSA key fingerprint is SHA256:xxxxxxxx... Are you sure you want to continue connecting (yes/no)?输入yes后如果提示输入密码说明服务运行正常。用Windows账户密码登录即可。5.2 常见错误解决方案问题1连接超时检查防火墙是否放行22端口确认服务状态Get-Service sshd查看日志Get-EventLog -LogName Application -Source OpenSSH | Select-Object -First 20问题2密码被拒绝确保使用正确的Windows账户密码尝试在sshd_config中添加PasswordAuthentication yes问题3找不到匹配的主机密钥删除已知主机文件del ~\.ssh\known_hosts或者更新密钥Repair-SshdHostKeyPair -Confirm:$false6. 高级配置技巧6.1 密钥登录配置更安全在客户端生成密钥对ssh-keygen -t ed25519将公钥复制到Windows服务器scp ~/.ssh/id_ed25519.pub userwin11-pc:在服务器上创建授权文件# 确保.ssh目录存在 if (!(Test-Path -Path $env:USERPROFILE\.ssh)) { New-Item -ItemType Directory -Path $env:USERPROFILE\.ssh } # 添加公钥 Add-Content -Path $env:USERPROFILE\.ssh\authorized_keys -Value (Get-Content $env:USERPROFILE\id_ed25519.pub) # 设置权限关键 icacls $env:USERPROFILE\.ssh\authorized_keys /inheritance:r /grant Administrators:F /grant SYSTEM:F6.2 修改默认Shell为PowerShell编辑C:\ProgramData\ssh\sshd_config添加Subsystem powershell c:/progra~1/powershell/7/pwsh.exe -sshs -NoLogo重启服务后远程连接就会直接进入PowerShell 7环境。7. 日常维护建议7.1 服务状态监控创建定时任务检查SSH服务# 每天检查一次 $action { Start-Service sshd } $trigger New-JobTrigger -Daily -At 12:00 AM Register-ScheduledJob -Name SSH守护 -ScriptBlock $action -Trigger $trigger7.2 日志分析使用PowerShell筛选关键事件Get-WinEvent -FilterHashtable { LogNameApplication ProviderNameOpenSSH StartTime(Get-Date).AddDays(-1) } | Select-Object TimeCreated,Message7.3 性能优化在sshd_config中添加这些参数MaxStartups 10:30:100 ClientAliveInterval 300 TCPKeepAlive yes这可以防止大量并发连接拖垮服务器同时保持长时间会话不中断。