Si tenemos algun script que ejecuta remotamente comandos en muchos equipos usando SSH, puede que alguna vez nos hayamos encontrado con esperas interminables cuando intentábamos lanzar cosas en equipos que estaban apagados, inaccesibles, etc
Para cambiar el timeout en el cliente SSH y obtener fallos de timeout de forma más rápida, podemos usar este parámetro en el cliente ssh, que indica en segundos el tiempo de timeout de SSH.
-o ConnectTimeout=3
De esta forma, a los 3 segundos de intentar conectar, el cliente abortará la conexión, dará un error de timeout y seguirá a otra cosa, entorpeciendo mucho menos la ejecución de nuestro script.
Hay que tener en cuenta los tiempos habituales de respuesta del SSH. Hay máquinas que están detrás de varios firewalls y que tardan más en realizar la conexión. Para estos casos, cambiar el timeout en el cliente SSH a los 3 segundos que te he puesto anteriormente podría ser demasiado agresivo. Adapta los timeouts SSH a tu entorno.
Desde línea de comandos, quedaría tal que así:
ssh -o ConnectTimeout=3 usuario@hostremoto
Pasados 3 segundos completos desde que intenta conectar, si no hay respuesta, el cliente nos devolvería el siguiente error
ssh: connect to host hostremoto port 22: Connection timed out