Como uma tentativa de SSH pode ser cancelada se a conexão leva mais de N segundos para estabelecer uma conexão?

Como uma tentativa de SSH pode ser cancelada se a conexão leva mais de N segundos para estabelecer uma conexão?

Eu tenho um script de implantação que usa SSH para conectar-se a vários hosts. Ocasionalmente, um host estará sob uma carga tão severa que a tentativa de ssh será interrompida. Eventualmente, isso causará um tempo limite na implantação, mas somente após um longo período de tempo.

Idealmente, gostaria que o script falhasse mais rápido que o tempo limite de 20 minutos.

Existe uma maneira de detectar que a conexão SSH não foi feita após um determinado período de tempo, para que eu pudesse cancelar a tentativa de forma mais controlada?

Responder1

É necessário definir um tempo limite de conexão ConnectTimeoutassim:

-o ConnectTimeout=1200

Como a página de manual parassh_configopções afirma:

Especifica o tempo limite (em segundos) usado ao conectar-se ao servidor SSH, em vez de usar o tempo limite TCP do sistema padrão. Este valor é usado somente quando o alvo está inativo ou realmente inacessível, e não quando recusa a conexão.

Então seria algo assim em uso:

ssh -o ConnectTimeout=1200 [email protected]

FWIW, o ConnectTimeoutvalor – como muitas coisas em scripts como este – é definido em segundos. Então 1200 segundos equivalem a 20 minutos

informação relacionada