### 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.
timeout=cmd_timeout,
            environment=environment,
        )
        
        channel = stdout.channel
        
        stdin.close()
        channel.shutdown_write()
        agg_stdout = b""
        agg_stderr = b""
        
        stdout_buffer_length = len(stdout.channel.in_buffer)
        if stdout_buffer_length > 0:
            agg_stdout += stdout.channel.recv(stdout_buffer_length)
        timedout = False
        
        while not channel.closed or channel.recv_ready() or channel.recv_stderr_ready():
            readq, _, _ = select([channel], [], [], cmd_timeout)
            if cmd_timeout is not None:
                timedout = not readq
            for recv in readq:
                if recv.recv_ready():
                    output = stdout.channel.recv(len(recv.in_buffer))
                    agg_stdout += output
                    for line in output.decode("utf-8", "replace").strip("\n").splitlines():
                        self.log.info(line)
                if recv.recv_stderr_ready():
                    output = stderr.channel.recv_stderr(len(recv.in_stderr_buffer))
                    agg_stderr += output
                    for line in output.decode("utf-8", "replace").strip("\n").splitlines():