For each directive, the **first relevant occurrence in the `ssh_config` is used**.

Quoting [man page for `ssh_config`](https://man.openbsd.org/ssh_config):

> Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.

---

So with the configuration file below:

- For all hosts, `ServerAliveInterval 1` is always used, `4` and `7` are never used, not even for `work`.
- `ConnectTimeout` is `2` for `work`, for other hosts it's `3`, `8` is never used.
- For all hosts, the `ServerAliveCountMax` is `5`, the `work`-specific value `6` is never used, not even for `work`.

```
ServerAliveInterval 1

Host work
  ConnectTimeout 2

Host *
  ConnectTimeout 3
  ServerAliveInterval 4
  ServerAliveCountMax 5

Host work
  ServerAliveCountMax 6
  ServerAliveInterval 7

ConnectTimeout 8
```