Во-первых, нужно понять на каком этапе вам нужен таймаут.
ssh2_connect не поддерживает настройку таймаута и с этим ничего не сделать. Выход - использовать что-то другое, например
phpseclib.
Для
ssh2_exec вы можете отслеживать таймаут самостоятельно. Примерно так:
$timeout = 30;
$timeStart = time();
while(!feof($rStream)) {
echo fread($rStream, 1024); //stdout
echo fread($rErrorStream, 1024); //stderr
if((time() - $timeStart) > $timeout) {
//timeout
break;
}
usleep(100); //prevent cpu overload
}
Ну и вызовы stream_set_blocking нужно убрать.