您可以使用sftp 包中的Open(path string)和WriteTo(w io.Writer)方法(当然您需要一个 os.File 或类似的东西来写入)。


client, err := ssh.Dial("tcp", "192.x.x.x:22", sshConfig)

if err != nil {

    panic("Failed to dial: " + err.Error())

}

fmt.Println("Successfully connected to ssh server.")


// open an SFTP session over an existing ssh connection.

sftp, err := sftp.NewClient(client)

if err != nil {

    log.Fatal(err)

}

defer sftp.Close()


srcPath := "/tmp/"

dstPath := "C:/temp/"

filename := "test.txt"


// Open the source file

srcFile, err := sftp.Open(srcPath + filename)

if err != nil {

    log.Fatal(err)

}

defer srcFile.Close()


// Create the destination file

dstFile, err := os.Create(dstPath + filename)

if err != nil {

    log.Fatal(err)

}

defer dstFile.Close()


// Copy the file

srcFile.WriteTo(dstFile)