使用Golang的SSH指纹

时间:2016-09-28 15:33:44

标签: go ssh

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

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

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:2)

另一种方法是使用ssh包解析密钥,然后使用FingerprintLegacyMD5生成指纹。看到这个答案:

https://stackoverflow.com/a/46430102/1601137