ssh provider has limit to sshtunnel  < 0.2
https://github.com/apache/airflow/blob/9d6ae609b60449bd274c2f96e72486d73ad2b8f9/setup.py#L451

I don't know why? sshtunnel  already released 0.4
I didn't open PR because I don't know this provider i just tried to install it and couldn't due to conflicts with other requirements in my system so eventually i used vitrual env to solve my problem but logging this issue so that someone who knows this code can handle it.
airflow/providers/ssh/hooks/ssh.py
if self.conn_timeout is None:
            self.conn_timeout = self.timeout if self.timeout else TIMEOUT_DEFAULT
        if self.pkey and self.key_file:
            raise AirflowException(
                "Params key_file and private_key both provided.  Must provide no more than one."
            )
        if not self.remote_host:
            raise AirflowException("Missing required param: remote_host")
        
        if not self.username:
            self.log.debug(
                "username to ssh to host: %s is not specified for connection id"
                " %s. Using system's default provided by getpass.getuser()",
                self.remote_host,
                self.ssh_conn_id,
            )
            self.username = getuser()
        user_ssh_config_filename = os.path.expanduser('~/.ssh/config')
        if os.path.isfile(user_ssh_config_filename):
            ssh_conf = paramiko.SSHConfig()
            with open(user_ssh_config_filename) as config_fd:
                ssh_conf.parse(config_fd)
            host_info = ssh_conf.lookup(self.remote_host)
            if host_info and host_info.get('proxycommand'):
                self.host_proxy = paramiko.ProxyCommand(host_info.get('proxycommand'))
            if not (self.password or self.key_file):
                if host_info and host_info.get('identityfile'):
                    self.key_file = host_info.get('identityfile')[0]
        self.port = self.port or SSH_PORT
    def get_conn(self) -> paramiko.SSHClient: