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.
OpenSSH client-side (in this case your personal computer) configuration file is named
config
, and it is stored in the hidded .ssh
directory under your user’s home directory (i.e., ~/.ssh
)When you use the
ssh
command 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 ~/.ssh
By default, the SSH configuration file may not exist, so you may need to create it using the
touch
command :touch ~/.ssh/config
This file must be readable and writable only by the user and not accessible by others:
chmod 600 ~/.ssh/config
The SSH Config File takes the following structure:
Host hostname1
SSH_OPTION value
SSH_OPTION value
Host hostname2
SSH_OPTION value
Host *
SSH_OPTION value
The 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.
Here we peovide a list of Oscar hosts and typical SSH configuration options. You have two options
- 1.Copy the list of hosts below directly into your SSH Config File (i.e.,
~/.ssh/config
) - 2.Keep this content in a spearate file for Oscar hosts, lets say
~/.ssh/config.oscar
and include that file in your main configuration file. In this case, the first line of~/.ssh/config
will beInclude "~/.ssh/config.oscar"
Don't forget to replace <username> with your user. Also the configuration assumes your identity key is ~/.ssh/id_rsa - if you named it anything else, please update the value. If you need to generate a key got here
# 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-oscar
You may now connect using the shortchut notation provided by your configuration file. That is, all you need to type is:
ssh oscar-campus
According 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 modified 4mo ago