小编典典

转到-如何从PublicKey生成SSH PublicKey指纹,PublicKey的类型可能是[rsa dsa ssh-rsa ssh-dss ecdsa]之一

go

我只有一个PublicKey字符串,如何获得PublicKey指纹?我有一些想法表https://go-
review.googlesource.com/c/crypto/+/32814,但是我不知道如何
实现ssh.PublicKey接口。


阅读 506

收藏
2020-07-02

共1个答案

小编典典

您可能要使用ssh包中的ssh.ParseAuthorizedKey来加载密钥:

https://godoc.org/golang.org/x/crypto/ssh#ParseAuthorizedKey

这将为您提供一个公共密钥,您可以将其称为ssh.FingerprintLegacyMD5以获取指纹(假设在这里您想要md5)。

https://godoc.org/golang.org/x/crypto/ssh#FingerprintLegacyMD5

https://godoc.org/golang.org/x/crypto/ssh#FingerprintSHA256

func main() {
    // Read a key from a file in authorized keys file line format
    // This could be an rsa.pub file or a line from authorized_keys
    pubKeyBytes := []byte(`ssh-rsa AAAABMYKEY...ABC me@myplace.local`)

    // Parse the key, other info ignored
    pk, _, _, _, err := ssh.ParseAuthorizedKey(pubKeyBytes)
    if err != nil {
        panic(err)
    }

    // Get the fingerprint
    f := ssh.FingerprintLegacyMD5(pk)

    // Print the fingerprint
    fmt.Printf("%s\n", f)
}

提供了两种指纹功能,不确定要使用哪一种。

2020-07-02