Skip to Content

10 Must-know Tips about SSH sshd_config file

If you’re administering a Linux server, then you’re likely familiar with the Secure Shell (SSH) protocol. SSH is a secure communications protocol used for logging into remote servers and executing commands. The sshd_config file is the configuration file for the SSH daemon, sshd. In this article, we will take a look at everything you need to know about the sshd_config file!

What is the sshd_config file?

The sshd_config file is the configuration file for the SSH daemon, sshd. It contains a variety of options that can be used to customize SSH performance or security. The default location is /etc/ssh/sshd_config on Linux systems.

What are some important options in the sshd_config file?

Some important options include the Protocol version, Port number, ListenAddress, HostKey, Key Exchange, Ciphers, and MACs.

  • Protocol version:The protocol version specifies the version of the SSH protocol to use.
  • Port: The port option specifies the port number that sshd should listen on. The default is 22.
  • ListenAddress: The ListenAddress option specifies the IP address or hostname that sshd should bind to. By default, sshd will bind to all available network interfaces (0.0.0.0).
  • HostKey: The HostKey options specify the location of the host keys for the SSH server. These are used for verifying the identity of the server when connecting.
  • Key Exchange: The Key Exchange options specify the type of key exchange to use. The default is “diffie-hellman-group-exchange-sha256”, which provides strong security.
  • Ciphers: The Ciphers option specifies the ciphers that sshd should use for encryption. The default is “aes256-ctr, aes192-ctr, aes128-ctr, blowfish-cbc”.

How do I configure the ssh sshd_config file?

The sshd_config file is a text file, so you can edit it with any text editor. However, before making changes to the file, it’s always a good idea to make a backup copy of the original.

How can I troubleshoot SSH problems?

Some common problems include connection refused errors, Permission denied errors, and Timeout errors. One way to troubleshoot SSH problems is to use the -vvv option when connecting. This will provide verbose output that can be helpful in diagnosing the problem.

Another way to troubleshoot SSH problems is to look in the log files. On Debian and Ubuntu systems, the log file is located at /var/log/auth.log. On CentOS and Red Hat systems, the log file is located at /var/log/secure.

You can also try connecting with the -D option, which will enable a debugging mode that will print out extra information about the connection process.

Can I change the port that SSH runs on?

Yes, the Port option in the sshd_config file specifies the port number that sshd should listen on. The default is 22, but you can change this setting.

Type the following command:
$ sudo vi /etc/ssh/sshd_config
Locate line that read as follows:
Port 22
OR
#Port 22
To set the port to 2222, enter:
Port 2222

Can I use a different cipher or MAC algorithm than what is specified in the sshd_config file?

Yes, the Ciphers and MACs options in the sshd_config file specify the algorithms that sshd should use for encryption and integrity checking, respectively.

You can change these settings to use different algorithms, but you should only do so if you have a good reason to (for example, if you need to support older clients that only support certain algorithms).

Can I use wildcards in the sshd_config file?

Yes, some options support wildcards. For example, the ListenAddress option can be specified as “ListenAddress *” to listen on all available interfaces. Please consult the sshd_config( ) man page for more information about which options support wildcards.

What is the difference between “AllowUsers” and “DenyUsers”?

The AllowUsers option specifies a list of users that are allowed to connect via SSH, while the DenyUsers option specifies a list of users that are not allowed to connect via SSH.

Is there anything else that I need to know about configuring ssh?

There are a number of other options that can be configured in the sshd_config file, so it’s always a good idea to consult the man pages for more information. Additionally, there are some helpful resources available online, such as the OpenSSH website (openssh.com) and the sshd( ) man page on Debian and Ubuntu systems.

What are the different ssh daemon options available in the sshd_config file

  • The Logging option controls how much information is logged by sshd. The default is “auth.notice”.
  • The ClientAliveInterval and ClientAliveCountMax options control the behavior of the client-alive checking feature. The default values are “300” and “10000”, respectively.
  • The ServerAliveInterval and ServerAliveCountMax options control the behavior of the server-alive checking feature. The default values are “120” and “3600”, respectively.
  • The PermitRootLogin option controls whether root can login via SSH. The default is “yes”.
  • The StrictModes option controls whether sshd will check file permissions when opening files for reading or writing. The default is “no”.
  • The UsePAM option enables Pluggable Authentication Modules (PAM) for authentication. The default is “yes”.
  • The AllowUsers option specifies a list of users that are allowed to connect via SSH.
  • The DenyUsers option specifies a list of users that are not allowed to connect via SSH.
  • The AllowGroups option specifies a list of groups that are allowed to connect via SSH.
  • The DenyGroups option specifies a list of groups that are not allowed to connect via SSH.
  • The MaxAuthTries option controls the maximum number of authentication attempts permitted per connection. The default is “20”.

That’s all for now! If you have any questions, please don’t hesitate to ask in the comments section below. Thanks for reading!