Go(Gin) + React(Vite + shadcn/ui + Tailwind) 前后端分离,全中文 UI - 集群管理:Kubeconfig / Token 双接入,kubectl + helm 部署 - 主机管理:SSH 密钥 / 密码双认证,CPU/内存/磁盘使用率监控,SSH 错误中文友好提示 - 存储配置、部署管理、系统设置 - Docker 镜像内置 kubectl + helm,开箱即用 - run.sh 一键启停(start/stop/restart/status) Co-Authored-By: Claude <noreply@anthropic.com>
34 lines
1.2 KiB
Go
34 lines
1.2 KiB
Go
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
|
|
}
|
|
}
|