Silencing unnecessary SSH client output keeps interactive sessions and automation clean, especially when only remote command results matter. Connection banners, login notices, and diagnostic lines can otherwise clutter logs, make pipeline parsing fragile, or obscure the information that actually needs attention.
The OpenSSH client controls its chatter with the quiet flag ‑q, the LogLevel setting, and configuration files in /etc/ssh/ssh_config and /~/.ssh/config. Adjusting these options changes which messages are printed while leaving remote stdin, stdout, and stderr streams untouched, so remote programs continue to behave normally.
Aggressive quiet settings can hide host key warnings, authentication hints, and other diagnostics that help detect misconfiguration or attacks. Quiet modes suit stable, well-tested automation and scripted use, while higher LogLevel values or verbose flags remain important for troubleshooting on Linux, macOS, and Windows 11 terminals that use OpenSSH.
Steps to reduce verbosity and silence SSH connection output:
- Open a terminal on the local machine.
- Run a standard SSH connection to observe the normal banners and informational messages.
$ ssh user@host.example.net user@host:~$ exit logout Connection to host.example.net closed.
- Use the quiet flag to suppress most client banner and warning output during connection.
$ ssh -q user@host.example.net 'hostname' host
The ‑q flag enables quiet mode for ssh and behaves like setting LogLevel to QUIET for that single command.
- Apply an error-only log level so that only failures are printed while routine informational messages are hidden.
$ ssh -o LogLevel=ERROR -o ConnectTimeout=3 203.0.113.250 ssh: connect to host 203.0.113.250 port 22: Connection timed out
LogLevel=ERROR keeps the connection noisy enough to show problems while removing banners and less important notices.
- Combine quiet and LogLevel options for minimal client noise while still showing remote command output.
$ ssh -q -o LogLevel=QUIET user@host.example.net "echo ok" ok
Quiet options affect only SSH client messages; remote command output still appears unless redirected on the remote side.
- Open the per-user configuration file /~/.ssh/config in a text editor.
$ nano ~/.ssh/config
- Add a host block that enables quiet behavior by default for a specific target.
Host quiet-remote HostName host.example.net User user IdentityFile ~/.ssh/id_ed25519 LogLevel QUIET
Setting LogLevel QUIET for a broad pattern such as Host * can hide important host key change or warning messages for all connections.
- Connect using the configured host alias so that the quiet defaults from /~/.ssh/config are applied automatically.
$ ssh quiet-remote 'hostname' host
- Inspect the computed configuration for the alias to confirm the effective LogLevel value.
$ ssh -G quiet-remote | grep -i loglevel loglevel SILENT
- Increase LogLevel or enable verbose flags when detailed diagnostics are required again.
$ ssh -v -o LogLevel=INFO user@host.example.net hostname OpenSSH_9.6p1 Ubuntu-3ubuntu13.14, OpenSSL 3.0.13 30 Jan 2024 debug1: Reading configuration data /home/user/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to host.example.net [203.0.113.50] port 22. debug1: Connection established. ##### snipped ##### host
Higher LogLevel values and verbose flags expose connection details useful for troubleshooting; related options are described in How to increase SSH connection verbosity.
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.
