package services import "strings" // FormatSSHError 将底层 SSH 错误翻译为中文友好提示,便于用户排查 func FormatSSHError(err error) string { if err == nil { return "" } msg := err.Error() lower := strings.ToLower(msg) switch { case strings.Contains(lower, "i/o timeout") || strings.Contains(lower, "deadline exceeded") || strings.Contains(lower, "connection timed out"): return "连接超时,请检查主机网络或 SSH 端口是否可达" case strings.Contains(lower, "connection refused"): return "连接被拒绝,目标端口未开放或 SSH 服务未运行" case strings.Contains(lower, "no such host") || strings.Contains(lower, "no route to host"): return "无法解析或到达目标主机,请检查 IP 地址" case strings.Contains(lower, "permission denied") || strings.Contains(lower, "unable to authenticate") || strings.Contains(lower, "handshake") || strings.Contains(lower, "password"): return "认证失败,请检查用户名、密码或 SSH 密钥" case strings.Contains(lower, "no supported methods"): return "SSH 协商失败,服务端未支持当前认证方式" default: return msg } }