Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSH指纹与Golang_Go_Ssh - Fatal编程技术网

SSH指纹与Golang

SSH指纹与Golang,go,ssh,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 密钥签名只是ssh wire格式的未编码密钥数据的加密散列 以下是从OpenSSH格式公钥解析ssh密钥并获取MD5指纹的基本示例: key, err := ioutil.ReadFile("/path/to/id_rsa.pub") if err != nil { l

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

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

密钥签名只是ssh wire格式的未编码密钥数据的加密散列

以下是从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()

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


什么的指纹?您的远程服务器、本地ssh服务器、ssh代理中的特定公钥、本地文件?顺便说一句,你展示的模式是一个md5指纹,它没有被使用过longer@JimB我的本地机器。我需要它与terraform一起使用。@JimB访问droplet的密钥与本地机器的ssh守护程序的公钥没有任何关系。如果您试图定义访问液滴的密钥,则需要在DigitalOcean中添加该密钥,然后通过ID或指纹引用该密钥,两者都提供。@CESCO:我仍要重复,DO中的密钥不是引用您的本地密钥,而是您向其注册的密钥,你可以通过他们的API获得他们使用的指纹ID。在terraform中,我们通常会引用配置中其他地方的密钥,比如ssh_keys=[${digitalocean_ssh_key.foobar.ID}],因此没有理由尝试计算指纹。完美!只需要追加:每两个字符都被认为是正确答案。我仍然很难把最终结果变成一个字符串。JimB@CESCO:你到底有什么问题?示例打印到stdout,但字符串操作基本相同。got it str:=strings.ToUpperhex.EncodeToStringfp[:]