code: func (r *remoteSubsystem) Start(channel ssh.Channel) error {
  	session := r.serverContext.RemoteSession
  
  	stdout, err := session.StdoutPipe()
  	if err != nil {
  		return trace.Wrap(err)
  	}
  	stderr, err := session.StderrPipe()
  	if err != nil {
  		return trace.Wrap(err)
  	}
  	stdin, err := session.StdinPipe()
  	if err != nil {
  		return trace.Wrap(err)
  	}
  
  	// request the subsystem from the remote node. if successful, the user can
  	// interact with the remote subsystem with stdin, stdout, and stderr.
  	err = session.RequestSubsystem(r.subsytemName)
  	if err != nil {
  		// emit an event to the audit log with the reason remote execution failed
  		r.emitAuditEvent(err)
  
  		return trace.Wrap(err)
  	}
  
  	// copy back and forth between stdin, stdout, and stderr and the SSH channel.
  	go func() {
  		defer session.Close()
  
  		_, err := io.Copy(channel, stdout)
  		r.errorCh <- err
  	}()
  	go func() {
  		defer session.Close()
  
  		_, err := io.Copy(channel.Stderr(), stderr)
  		r.errorCh <- err
  	}()
  	go func() {
  		defer session.Close()
  
  		_, err := io.Copy(stdin, channel)
  		r.errorCh <- err
  	}()
  
  	return nil
  }
docs: // Start will begin execution of the remote subsytem on the passed in channel.