feat: LokiDeploy 初始提交 - 轻量级 K8s Loki 部署平台
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>
This commit is contained in:
commit
2a93de600d
134 files changed
+19595
No files matched your search
@@ -0,0 +1,33 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user