(保姆级指南)Windows服务器开启OpenSSH服务并用Xshell安全连接的完整流程

📅 2026/7/16 15:40:42
(保姆级指南)Windows服务器开启OpenSSH服务并用Xshell安全连接的完整流程
1. Windows服务器开启OpenSSH服务第一次在Windows Server上配置OpenSSH可能会觉得有点懵但其实跟着步骤走一点都不难。我最近给公司几台服务器都配了这个服务实测Windows Server 2016/2019/2022都适用。1.1 安装OpenSSH服务器组件现在新版的Windows Server已经内置了OpenSSH不用像以前那样手动下载安装包了。打开你的服务器跟着我做用管理员身份打开PowerShell一定要管理员权限输入以下命令检查是否已安装Get-WindowsCapability -Online | Where-Object Name -like OpenSSH*如果看到State显示NotPresent说明需要安装。继续输入# 安装服务端组件 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0安装过程大概1-2分钟完成后你会看到返回结果中Path和Online都是True。提示如果遇到拒绝访问错误检查下是不是忘了用管理员身份运行PowerShell。我在第一次操作时就犯了这个低级错误。1.2 启动SSH服务安装完组件后需要启动服务并设置开机自启# 启动服务 Start-Service sshd # 设置开机自动启动 Set-Service -Name sshd -StartupType Automatic这时候可以检查下服务状态Get-Service sshd如果看到Running就说明启动成功了。我遇到过服务启动失败的情况一般都是端口被占用可以用netstat -ano | findstr :22查下22端口是否被其他程序占用。1.3 配置防火墙规则安全起见Windows防火墙默认会阻止外部访问。我们需要放行22端口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 }这个命令会创建一个永久有效的入站规则。曾经有次我忘了配防火墙死活连不上排查了半天才发现问题。2. 服务器端关键配置2.1 修改SSH默认配置配置文件位于C:\ProgramData\ssh\sshd_config用记事本管理员身份打开编辑# 允许密码登录 PasswordAuthentication yes # 禁用不安全的协议 Protocol 2 # 限制root登录如果有需要 #PermitRootLogin no # 修改默认端口可选增强安全性 #Port 2222改完后记得重启服务Restart-Service sshd重要安全提示如果服务器在公网强烈建议修改默认22端口禁用root登录启用密钥登录后面会讲2.2 用户权限管理默认情况下所有管理员账户都能通过SSH登录。如果想限制特定用户打开计算机管理 → 本地用户和组创建一个新用户组比如SSH Users将允许SSH登录的用户加入这个组回到sshd_config文件添加AllowGroups SSH Users3. Xshell客户端配置3.1 下载安装Xshell去官网下载免费版就行家庭和学校使用完全够用。安装过程一路下一步就行没什么坑。3.2 创建新会话打开Xshell点击新建会话关键配置项名称给你的连接起个好记的名字协议选SSH主机服务器IP地址端口22如果改了端口就填修改后的用户身份验证方法选Password用户名服务器登录账号密码对应密码第一次连接时会弹出SSH安全警告这是正常的点接受并保存就行。3.3 高级安全设置建议做这些优化配置会话属性→终端→VT模式选Linux兼容性更好外观调整字体大小我习惯用Consolas 14pt日志记录建议开启方便回溯操作历史4. 连接测试与排错4.1 基础连接测试点击连接后如果一切正常你会看到命令行提示符。可以试试基本命令whoami systeminfo | findstr /B /C:OS Name /C:OS Version4.2 常见错误解决问题1连接超时检查服务器IP是否正确确认防火墙已放行端口测试本地是否能ping通服务器问题2认证失败检查用户名/密码是否正确查看服务器安全日志Get-EventLog -LogName Security -InstanceId 4625 -Newest 5问题3SSH服务未响应检查服务状态Get-Service sshd查看日志Get-WinEvent -LogName OpenSSH/Operational | Select-Object -First 205. 进阶安全配置5.1 密钥认证设置比密码更安全的登录方式生成密钥对ssh-keygen -t rsa -b 4096将公钥上传到服务器# 在服务器上创建.ssh目录 mkdir C:\Users\你的用户名\.ssh # 将客户端公钥内容添加到authorized_keys文件 Add-Content -Path C:\Users\你的用户名\.ssh\authorized_keys -Value 你的公钥内容修改sshd_configPubkeyAuthentication yes PasswordAuthentication no5.2 启用双重认证可以通过Google Authenticator实现安装插件Install-Module -Name GoogleAuthenticator配置sshd_configAuthenticationMethods publickey,keyboard-interactive6. 日常维护技巧6.1 服务监控创建监控脚本check_ssh.ps1$service Get-Service sshd if ($service.Status -ne Running) { Start-Service sshd Send-MailMessage -From alertyourdomain.com -To adminyourdomain.com -Subject SSH Service Alert -Body SSH service was down and has been restarted }然后设置计划任务定期执行。6.2 日志分析定期检查SSH登录记录# 查看成功登录 Get-EventLog -LogName Security -InstanceId 4624 -After (Get-Date).AddDays(-1) | Where-Object {$_.Message -like *logon type: 10*} # 查看失败尝试 Get-EventLog -LogName Security -InstanceId 4625 -After (Get-Date).AddDays(-1)7. 性能优化建议7.1 调整SSH参数在sshd_config中添加# 提高并发连接数 MaxStartups 30:30:60 # 保持连接活跃 ClientAliveInterval 300 ClientAliveCountMax 2 # 禁用DNS反向解析 UseDNS no7.2 资源限制可以通过组策略限制打开gpedit.msc找到计算机配置 → 管理模板 → 网络 → 网络连接 → Windows防火墙配置并发连接数限制8. 替代方案对比虽然Xshell很好用但还有其他选择客户端优点缺点Xshell功能全面会话管理强大商业版收费PuTTY轻量免费功能较少Windows终端系统内置功能基础MobaXterm标签页管理免费版有连接数限制我个人习惯用Xshell管理生产环境临时连接用Windows终端就够了。