code: func (tc *TeleportClient) ExecuteSCP(ctx context.Context, cmd scp.Command) (err error) {
  	// connect to proxy first:
  	if !tc.Config.ProxySpecified() {
  		return trace.BadParameter("proxy server is not specified")
  	}
  
  	proxyClient, err := tc.ConnectToProxy(ctx)
  	if err != nil {
  		return trace.Wrap(err)
  	}
  	defer proxyClient.Close()
  
  	clusterInfo, err := proxyClient.currentCluster()
  	if err != nil {
  		return trace.Wrap(err)
  	}
  
  	// which nodes are we executing this commands on?
  	nodeAddrs, err := tc.getTargetNodes(ctx, proxyClient)
  	if err != nil {
  		return trace.Wrap(err)
  	}
  	if len(nodeAddrs) == 0 {
  		return trace.BadParameter("no target host specified")
  	}
  
  	nodeClient, err := proxyClient.ConnectToNode(
  		ctx,
  		nodeAddrs[0]+"@"+tc.Namespace+"@"+clusterInfo.Name,
  		tc.Config.HostLogin,
  		false)
  	if err != nil {
  		tc.ExitStatus = 1
  		return trace.Wrap(err)
  	}
  
  	err = nodeClient.ExecuteSCP(cmd)
  	if err != nil {
  		// converts SSH error code to tc.ExitStatus
  		exitError, _ := trace.Unwrap(err).(*ssh.ExitError)
  		if exitError != nil {
  			tc.ExitStatus = exitError.ExitStatus()
  		}
  		return err
  
  	}
  
  	return nil
  }
docs: // ExecuteSCP executes SCP command. It executes scp.Command using
  // lower-level API integrations that mimic SCP CLI command behavior