Understanding SSH Configuration Hierarchy

Understanding SSH Configuration Hierarchy

SSH configuration operates through a hierarchy of settings that provides flexibility while maintaining security. Understanding this hierarchy enables administrators to implement consistent policies while accommodating specific requirements for different users, hosts, or environments.

The configuration precedence order determines which settings take effect:

  1. Command-line options (highest priority)
  2. User-specific client configuration (~/.ssh/config)
  3. System-wide client configuration (/etc/ssh/ssh_config)
  4. Compiled-in defaults (lowest priority)

Server-side configuration follows a similar pattern:

# Check effective server configuration
sudo sshd -T | less

# Test specific configuration scenarios
sudo sshd -T -C user=alice,host=192.168.1.100,addr=192.168.1.100

# Validate configuration syntax without applying
sudo sshd -t -f /etc/ssh/sshd_config.new