如何编写PoSH-SSH脚本批量检测服务器SSH默认密码安全风险
PoSH-SSH 批量SSH安全检测脚本修复方案
问题1:无法正确读取clients.txt的修复
你原脚本存在1个核心语法错误:New-SSHSession的目标主机参数名遗漏,你写的-$client属于无效参数,正确参数为-ComputerName $client,这是你读取内容后执行异常的核心原因。
除此之外读取失败的常见优化点:
- 读取时过滤空白行和注释行,避免空值引发后续报错
- 明确指定文本编码,避免不同编码格式导致读取乱码
- 增加文件存在性校验,避免文件不存在的异常
对应读取部分修正代码:
# 读取客户端列表,过滤空白行与注释行,指定编码为系统默认编码 if(Test-Path C:\clients.txt){ $clients = Get-Content C:\clients.txt -Encoding Default | Where-Object { $_ -notmatch '^\s*$|^#' } }else{ Write-Error "客户端列表文件C:\clients.txt不存在" exit 1 }
问题2:SSH登录状态判断与分支逻辑实现
PoSH-SSH的New-SSHSession登录成功会返回会话对象,登录失败会抛出错误,我们可以通过try/catch捕获错误,结合返回值判断登录结果:
- 增加
-ErrorAction Stop参数,将登录失败的非终止错误转为可捕获的终止错误 - 登录成功后执行风险通知逻辑,登录失败则记录异常信息
- 每次测试结束后关闭SSH会话,避免连接残留
提前准备默认凭据
你原脚本中-Credential test需要提前构建凭据对象,测试环境可使用以下代码生成,避免明文硬编码密码:
# 交互式输入默认测试账号密码 $defaultCred = Get-Credential -Message "输入要测试的默认账号密码"
完整登录判断逻辑
# 初始化扫描结果列表 $scanResults = @() # 批量遍历测试 foreach($client in $clients){ $result = [PSCustomObject]@{ 主机地址 = $client 登录状态 = "失败" 异常信息 = "" 风险等级 = "无" } try{ # 尝试SSH登录,超时设置为10秒避免长时间等待 $session = New-SSHSession -ComputerName $client -Credential $defaultCred -ConnectionTimeout 10000 -ErrorAction Stop if($session.Connected){ $result.登录状态 = "成功" $result.风险等级 = "高风险" # -------------------------- # 登录成功后触发通知逻辑 # -------------------------- # 控制台输出告警 Write-Warning "发现风险主机:$client 存在默认账号可登录漏洞" # 邮件通知示例(需提前配置SMTP参数) <# $mailParams = @{ From = "sec-alert@yourdomain.com" To = "admin@yourdomain.com" Subject = "SSH弱口令风险告警:主机$client存在默认账号登录漏洞" Body = "经检测,主机$client可使用测试默认账号成功登录,请立即整改" SmtpServer = "smtp.yourdomain.com" Port = 587 UseSsl = $true Credential = (Get-Credential "输入发件邮箱凭据") } Send-MailMessage @mailParams #> # 测试完成后关闭会话 Remove-SSHSession -Session $session | Out-Null } }catch{ $result.异常信息 = $_.Exception.Message } $scanResults += $result } # 导出扫描结果到CSV $scanResults | Export-Csv C:\ssh_scan_result.csv -NoTypeInformation -Encoding UTF8
其他注意事项
- 此类安全检测需提前获得资产归属方授权,禁止未授权扫描非自有资产
- 生产环境使用建议从安全凭据保管服务读取测试账号密码,不要硬编码敏感信息
- 可根据需求调整超时时间、增加扫描间隔,避免触发目标服务器的风控拦截规则
内容的提问来源于stack exchange,提问作者zargus123
相关产品推荐
相关产品推荐

