### Body

SSHHook uses the default stacklevel (1) in its deprecation warning, it should be 2:
https://github.com/apache/airflow/blob/b11525702c72cb53034aa29ccd6d0e1161ac475c/airflow/providers/ssh/hooks/ssh.py#L433-L439
https://github.com/apache/airflow/blob/b11525702c72cb53034aa29ccd6d0e1161ac475c/airflow/providers/ssh/hooks/ssh.py#L369-L374
https://github.com/apache/airflow/blob/b11525702c72cb53034aa29ccd6d0e1161ac475c/airflow/providers/ssh/hooks/ssh.py#L232-L238

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
if self.client is not None:
            self.client.close()
            self.client = None
    def get_tunnel(
        self, remote_port: int, remote_host: str = "localhost", local_port: int | None = None
    ) -> SSHTunnelForwarder:
        """Create a tunnel between two hosts.
        This is conceptually similar to ``ssh -L <LOCAL_PORT>:host:<REMOTE_PORT>``.
        :param remote_port: The remote port to create a tunnel to
        :param remote_host: The remote host to create a tunnel to (default localhost)
        :param local_port:  The local port to attach the tunnel to
        :return: sshtunnel.SSHTunnelForwarder object
        """
        if local_port:
            local_bind_address: tuple[str, int] | tuple[str] = ("localhost", local_port)
        else:
            local_bind_address = ("localhost",)
        tunnel_kwargs = {
            "ssh_port": self.port,
            "ssh_username": self.username,
            "ssh_pkey": self.key_file or self.pkey,
            "ssh_proxy": self.host_proxy,
            "local_bind_address": local_bind_address,
            "remote_bind_address": (remote_host, remote_port),