SSH Configuration File
How to save ssh configurations to a configuration file
When regularly connecting to multiple remote systems over SSH, you’ll find that remembering all the hosts and various command-line options becomes tedious. OpenSSH allows setting up a configuration file to store different SSH options for each remote machine you connect t.
SSH Config File Location 
OpenSSH client-side (in this case your personal computer) configuration file is named config, and it is stored in the hidded .sshdirectory under your user’s home directory (i.e., ~/.ssh)
When you use the sshcommand for the first time. The ~/.ssh directory is automatically created.  If the directory doesn’t exist on your system, create it using the command below:
mkdir -p ~/.ssh && chmod 700 ~/.sshBy default, the SSH configuration file may not exist, so you may need to create it using the touch command :
touch ~/.ssh/configThis file must be readable and writable only by the user and not accessible by others:
chmod 600 ~/.ssh/configSSH Config File Structure Basics
The SSH Config File takes the following structure:
Host hostname1
    SSH_OPTION value
    SSH_OPTION value
Host hostname2
    SSH_OPTION value
Host *
    SSH_OPTION valueThe contents of the SSH config file is organized into sections. Each section starts with the Host directive and contains specific SSH options used when establishing a connection with the remote SSH server.
Oscar Hosts
Here we peovide a list of Oscar hosts and typical SSH configuration options. You have two options
Copy the list of hosts below directly into your SSH Config File (i.e.,
~/.ssh/config)Keep this content in a spearate file for Oscar hosts, lets say
~/.ssh/config.oscarand include that file in your main configuration file. In this case, the first line of~/.ssh/configwill beInclude "~/.ssh/config.oscar"
# Oscar Hosts. Any hosts with the -campus suffix can be accessed
# only whithin Brown network i.e. campus or vpn
# Hosts without -campus sufix can be accessed from outside Brown
# but will requiere 2FA
# Hosts to connect to login nodes
Host oscar
    HostName ssh.ccv.brown.edu
    User <username>
    IdentityFile ~/.ssh/id_rsa
    ForwardAgent yes
    ForwardX11 yes
    TCPKeepAlive yes
    ServerAliveCountMax 20
    ServerAliveInterval 15
Host oscar-campus
    HostName sshcampus.ccv.brown.edu
    User <username>
    IdentityFile ~/.ssh/id_rsa
    ForwardAgent yes
    ForwardX11 yes
    TCPKeepAlive yes
    ServerAliveCountMax 20
    ServerAliveInterval 15
    
# These are jumphosts for vscode, we don't use them directly.
# For connecting your IDE see the next section
Host desktop-oscar-campus
    HostName desktop.ccv.brown.edu
    IdentityFile ~/.ssh/id_rsa
    User <username>
    ForwardAgent yes
Host desktop-oscar
    HostName ssh8.ccv.brown.edu
    IdentityFile ~/.ssh/id_rsa
    User <username>
    
# When connecting from VSCODE use the following hosts
Host vscode-oscar-campus
    HostName oscar2
    User <username>
    ProxyCommand ssh -q -W %h:%p desktop-oscar-campus
Host vscode-oscar
    HostName oscar2
    User <username>
    ProxyCommand ssh -q -W %h:%p desktop-oscarConnecting to your preconfigured host
You may now connect using the shortchut notation provided by your configuration file. That is, all you need to type is:
ssh oscar-campusAccording to the configuration above, this is equivalent to
ssh -X -A -o TCPKeepAlive=yes -o ServerAliveCountMax=20 -o ServerAliveInterval=15 [email protected]Much shorter. Enjoy!
Last updated
Was this helpful?