您需要使用
ssh.PublicKeys将列表
ssh.Signers转换成
ssh.AuthMethod。您可以使用从pem字节
ssh.ParsePrivateKey获取a
Signer,或者如果需要使用rsa,dsa或ecdsa私钥,则可以将其提供给
ssh.NewSignerFromKey。
这也是一个在代理支持下充实的示例(因为使用代理通常是仅使用密钥文件之后的下一步)。
sock, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK"))if err != nil { log.Fatal(err)}agent := agent.NewClient(sock)signers, err := agent.Signers()if err != nil { log.Fatal(err)}// or get the signer from your private key file directly// signer, err := ssh.ParsePrivateKey(pemBytes)// if err != nil {// log.Fatal(err)// }auths := []ssh.AuthMethod{ssh.PublicKeys(signers...)}cfg := &ssh.ClientConfig{ User: "username", Auth: auths,}cfg.SetDefaults()client, err := ssh.Dial("tcp", "aws-hostname:22", cfg)if err != nil { log.Fatal(err)}session, err = client.NewSession()if err != nil { log.Fatal(err)}log.Println("we have a session!")...


