Precedence

Perhaps you are wondering: what happens if some configuration settings conflict? For instance, if you use the Compression keyword to turn compression off, and also the -C command-line option to turn it on, who wins? In other words, who has precedence ?

For OpenSSH and Tectia clients, the order of precedence is, from strongest to weakest:

  1. Command-line options

  2. The user’s local client configuration file

  3. The global client configuration file[105]

Command-line options have the highest precedence, overriding any client configuration files. The user’s local file has next highest precedence, and the global file has lowest precedence. So, in our compression example, -C takes precedence over the Compression keyword, and compression is enabled. If a setting isn’t changed by any keyword or command-line option, the client’s default setting is used.

Remember that we’re speaking only of outgoing connections initiated by clients. Incoming connections, controlled by the SSH server, have other precedence rules. For servers, the user’s local configuration file definitely does not override the global file; otherwise, users could override global server settings, creating security holes and wreaking other havoc. [8.1.1]

[105] We don’t mention environment variables in this list because they don’t compete for precedence. Environment variables control different features that don’t overlap with command-line options and configuration files.

Get SSH, The Secure Shell: The Definitive Guide, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.