code: func (client *sshClient) Upload(files map[string][]byte) ([]byte, error) {
  	// Establish a single command session
  	session, err := client.client.NewSession()
  	if err != nil {
  		return nil, err
  	}
  	defer session.Close()
  
  	// Create a goroutine that streams the SCP content
  	go func() {
  		out, _ := session.StdinPipe()
  		defer out.Close()
  
  		for file, content := range files {
  			client.logger.Trace("Uploading file to server", "file", file, "bytes", len(content))
  
  			fmt.Fprintln(out, "D0755", 0, filepath.Dir(file))             // Ensure the folder exists
  			fmt.Fprintln(out, "C0644", len(content), filepath.Base(file)) // Create the actual file
  			out.Write(content)                                            // Stream the data content
  			fmt.Fprint(out, "\x00")                                       // Transfer end with \x00
  			fmt.Fprintln(out, "E")                                        // Leave directory (simpler)
  		}
  	}()
  	return session.CombinedOutput("/usr/bin/scp -v -tr ./")
  }
docs: // Upload copies the set of files to a remote server via SCP, creating any non-
  // existing folders in the mean time.