使用Golang的SSH指纹

CES*_*SCO 0 ssh go

如何使用Go获取自己的ssh指纹?

Finger, err := ssh.**
log.Println(Finger)
// 12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53
Run Code Online (Sandbox Code Playgroud)

Jim*_*imB 5

密钥签名只是ssh有线格式的未编码密钥数据的加密哈希.

以下是从OpenSSH格式公钥解析ssh密钥并获取MD5指纹的基本示例:

key, err := ioutil.ReadFile("/path/to/id_rsa.pub")
if err != nil {
    log.Fatal(err)
}

parts := strings.Fields(string(key))
if len(parts) < 2 {
    log.Fatal("bad key")
}

k, err := base64.StdEncoding.DecodeString(parts[1])
if err != nil {
    log.Fatal(err)
}

fp := md5.Sum([]byte(k))
fmt.Print("MD5:")
for i, b := range fp {
    fmt.Printf("%02x", b)
    if i < len(fp)-1 {
        fmt.Print(":")
    }
}
fmt.Println()
Run Code Online (Sandbox Code Playgroud)