Categories
IT-Stuff

easier life with custom ssh config file

get more comfort and make your life easier with a customized ssh config file
no need to create a bash alias file for this

Disclaimer:
use this code at your own risk and only if you know what you are doing. no liability from us for the consequences. so leave us alone if things go sideways

I am regularly connecting to multiple remote systems via SSH, and as far as I am concerned I find that remembering all of the remote IPs, the non-standard ssh ports, and various command-line options difficult, annoying, and at some stage or office hour impossible. The option for creating a bash alias file would do the trick, but i guess well not cool, or in other words not the use case I have.

Step 1 located in the /home directory of the user you can find .ssh/config if not, well you have to create the config file. If you want to edit the global config use /etc/ssh/ssh_config (must be readable to all users)

touch /home/user/.ssh/config
sudo chmod 600 home/user/.ssh/config

The config file structure looks something like this, and it is processed from top to bottom. The SSH command from the cli processes its configuration in the following order:

  1. ssh command line-option
  2. /home/user/.ssh/config option
  3. /etc/ssh/ssh_config options

Keep that in mind, if you are using override commands.

Step 2 edit the file for your needs

# comment

Host hostname1
    SSH_OPTION value
    SSH_OPTION value

Host hostname2
    SSH_OPTION value

Use Case to get connected:
ssh userNeeds@ssh.host.exymple.tld -p4422

with config file in /home/userNeeds/.ssh/config that looks something

Host exy
    HostName ssh.host.exymple.tld
    User userNeeds
    Port 4422

I will just need to type this to get connected:
ssh exy

Pretty fly ha?

These are the Config parameters you can use. (I will not get into Wild Cards and ref exp)
HostName: IP address of the remote server
User: Name of the user, you will log in as 9999
Port: The to connect on the remote server
Protocol: The version of protocol SSH should prefer (multi Values separated by comma)
IdentityFile: Location of file that contains RSA, ECDSA, and DSA authentication Identity
ForwardX11: It allows you to forward the remote server display on your machine
Compression: You want to use compression during the remote server connection or not
ServerAliveinterval: Set a timer in seconds for the server connection and in the given time if no response is received from the server, ssh will send a message to request a response
ServerAliveCountMax: Sets the number of messages that should be sent to request a response from the server
LogLevel: Verbosity level used when logging

So a common use case config looks like something like this

Host grommuo
         HostName grommuo.hatesno.plan
         Port 2222
         Forwardx11 no
         User tec-noP1503
         IdentityFile ~/.ssh/id_rsa
         Protocol 2
         Compression yes
         LogLevel Info

so to get connected tech tech guy only has to type ssh grommuo and is good go, fine thing and makes life easier.

Do not forget to include this config in your backup plan (justsaying)
This article can be interesting in combination with
4-step-setup-ssh-login-without-password
disabling-ssh-password-authentication

have Fun !