您在这里寻找的是:
func getHostKey(host string) (ssh.PublicKey, error) { file, err := os.Open(filepath.Join(os.Getenv("HOME"), ".ssh", "known_hosts")) if err != nil { return nil, err } defer file.Close() scanner := bufio.NewScanner(file) var hostKey ssh.PublicKey for scanner.Scan() { fields := strings.Split(scanner.Text(), " ") if len(fields) != 3 { continue } if strings.Contains(fields[0], host) { var err error hostKey, _, _, _, err = ssh.ParseAuthorizedKey(scanner.Bytes()) if err != nil { return nil, errors.New(fmt.Sprintf("error parsing %q: %v", fields[2], err)) } break } } if hostKey == nil { return nil, errors.New(fmt.Sprintf("no hostkey for %s", host)) } return hostKey, nil}
然后将您的hostKey定义行替换为
hostKey, err := getHostKey("host.com")if err != nil { log.Fatal(err)}
有关此主题的更多信息:
- 我从中获取部分代码的官方样本
- 为什么现在需要hostKey
编辑:还请查看
Anton有关
golang.org/x/crypto/ssh/knownhosts包装的以下答案。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)