code: func (process *TeleportProcess) findReverseTunnel(addrs []utils.NetAddr) (string, error) {
  	var errs []error
  	for _, addr := range addrs {
  		// In insecure mode, any certificate is accepted. In secure mode the hosts
  		// CAs are used to validate the certificate on the proxy.
  		clt, err := client.NewCredentialsClient(
  			addr.String(),
  			lib.IsInsecureDevMode(),
  			nil)
  		if err != nil {
  			return "", trace.Wrap(err)
  		}
  
  		resp, err := clt.Find(process.ExitContext())
  		if err == nil {
  			// If a tunnel public address is set, return it otherwise return the
  			// tunnel listen address.
  			if resp.Proxy.SSH.TunnelPublicAddr != "" {
  				return resp.Proxy.SSH.TunnelPublicAddr, nil
  			}
  			return resp.Proxy.SSH.TunnelListenAddr, nil
  		}
  		errs = append(errs, err)
  	}
  	return "", trace.NewAggregate(errs...)
  }
docs: // findReverseTunnel uses the web proxy to discover where the SSH reverse tunnel
  // server is running.