在AI服务器上为Windows运维配置OpenSSH与PowerShell远程管理
AI服务器如果混用Windows节点跑GPU推理或训练任务,远程运维不能只靠远程桌面。
更稳的做法是启用OpenSSH Server和PowerShell Remoting,用命令行完成服务检查、日志拉取和批量脚本下发。
下面按Windows Server 2019及以上版本说明配置过程,Windows 10/11专业版也可参考。
先确认系统状态和网络前提
操作前需要确认三件事:当前账号具备本地管理员权限;
服务器已配置固定IP或可解析的主机名;
防火墙允许管理流量通过。
远程桌面能连不代表SSH可用,两者是不同端口。
以管理员身份打开PowerShell,先检查OpenSSH相关功能是否存在:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
输出中OpenSSH.Server~~~~0.0.1.0的State为Installed表示已安装,NotPresent则需要安装。
同时确认WinRM服务状态:
Get-Service WinRM
如果服务停止且启动类型不是自动,后续PowerShell Remoting会失败,需要先处理。
安装并启动OpenSSH Server
安装OpenSSH Server可以直接用PowerShell完成,不需要手动下载安装包:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
安装完成后设置服务自动启动并立即运行:
Set-Service -Name sshd -StartupType Automatic
Start-Service sshd
检查服务是否监听22端口:
Get-NetTCPConnection -LocalPort 22 -State Listen
如果能看到sshd进程对应记录,说明服务已启动。
下面放行防火墙。
Windows安装OpenSSH时通常会自动创建规则,但部分镜像不会,需要手动确认:
Get-NetFirewallRule -Name *OpenSSH* | Select Name,Enabled,Direction
没有规则时手动添加:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
配置PowerShell Remoting作为补充通道
SSH适合单条命令和文件传输,PowerShell Remoting更适合执行返回结构化对象的脚本。
在目标Windows节点上启用WinRM:
Enable-PSRemoting -Force
该命令会启动WinRM服务、设置启动类型并创建防火墙规则。
执行后检查监听端口:
winrm enumerate winrm/config/listener
默认应看到HTTP监听器在5985端口。
如果AI服务器所在网段有安全要求,建议后续改用HTTPS监听器并导入证书,不要长期在公网暴露5985。
从管理机测试连接:
Test-WSMan -ComputerName 192.0.2.10
返回版本信息说明WinRM可达。
再用Invoke-Command执行一条远程命令验证权限:
Invoke-Command -ComputerName 192.0.2.10 -ScriptBlock { hostname; Get-Service sshd }
能返回主机名和sshd服务状态,说明远程管理链路可用。
容易踩坑的几个地方
账号权限与组策略:普通用户加入Remote Management Users组后才能通过WinRM连接,但SSH默认允许本地管理员组登录。
如果启用了域策略限制,需要检查Allow log on through Remote Desktop Services和WinRM相关策略是否冲突。
防火墙顺序:先确认规则再测试端口。
用Test-NetConnection -ComputerName 目标IP -Port 22从管理机测,比在服务器本机测更有意义。
本机通、远端不通,通常是防火墙或安全组问题。
SSH密钥与密码:默认配置允许密码登录。
生产环境建议改用密钥认证,在C:\ProgramData\ssh\sshd_config中确认PubkeyAuthentication yes,修改后重启sshd服务。
改配置前备份原文件,避免改错后无法登录。
WinRM内存与并发:批量执行脚本时注意WinRM默认并发限制,大量节点同时连接可能超时。
可以先小批量验证,再逐步扩大范围。
验证配置是否真正可用
完成上述步骤后,从管理机做三项检查:SSH能登录并执行命令、WinRM能返回远程对象、防火墙规则只放行必要端口。
SSH验证:
ssh Administrator@192.0.2.10 "hostname; Get-Service sshd"
WinRM验证:
Invoke-Command -ComputerName 192.0.2.10 -ScriptBlock { Get-Process | Measure-Object }
最后检查日志。
SSH登录失败可查看C:\ProgramData\ssh\logs\sshd.log,WinRM问题可运行winrm get winrm/config查看当前配置。
把测试命令和返回结果记录下来,后续节点扩容时可以直接复用这套检查流程。
AI服务器WindowsOps配置的起点不是装一堆管理平台,而是先把SSH和PowerShell这两条远程通道打通、权限收好、端口管住。
链路稳定后,再考虑用Ansible或脚本批量下发运维规范。