### Description

Following #29282, command timeout is set at the `SSHHook` level while it used to be able to set at the `SSHOperator` level.

I will work on a PR as soon as i can.

### Use case/motivation

Ideally, i think we could have a default value set on `SSHHook`, but with the possibility of overriding it at the `SSHOperator` level.

### Related issues

#29282 

### Are you willing to submit a PR?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

log_before_sleep = lambda retry_state: self.log.info(
            "Failed to connect. Sleeping before retry attempt %d", retry_state.attempt_number
        )
        for attempt in Retrying(
            reraise=True,
            wait=wait_fixed(3) + wait_random(0, 2),
            stop=stop_after_attempt(3),
            before_sleep=log_before_sleep,
        ):
            with attempt:
                client.connect(**connect_kwargs)
        if self.keepalive_interval:
            
            
            client.get_transport().set_keepalive(self.keepalive_interval)  
        if self.ciphers:
            
            
            client.get_transport().get_security_options().ciphers = self.ciphers  
        self.client = client
        return client
    def __enter__(self) -> SSHHook:
        warnings.warn(
            "The contextmanager of SSHHook is deprecated."
            "Please use get_conn() as a contextmanager instead."
            "This method will be removed in Airflow 2.0",
            category=DeprecationWarning,
        )
        return self
    def __exit__(self, exc_type, exc_val, exc_tb) -> None: