func copyFile(mach platform.Machine, r io.Reader, path string) error { sess, err := mach.SSHSession() if err != nil { return err } defer sess.Close() wr, err := sess.StdinPipe() if err != nil { return err } if err := sess.Start(fmt.Sprintf("tee %s", path)); err != nil { return err } go func() { io.Copy(wr, r) wr.Close() }() return sess.Wait() }