Do you go around remembering trying to remember seldom used server details? What was that server name or IP again? We use connection managers for that sort of thing. But what if I’m away from my PC. One could use the built in ssh config file option and make it portable in some way, e.g. adding it to a private git repo (don’t worry – no passwords are stored in the file).
The ~/.ssh/config file is a configuration file used by the OpenSSH client to specify various settings and options for SSH connections. It allows users to define custom configurations for different hosts, making it easier to manage and customize SSH connections.
Here’s a breakdown of how the ~/.ssh/config file works and what you can do with it:
-
Host Aliases:
You can define aliases for remote hosts to simplify connecting to them. For instance, if you often connect to a server with a long hostname, you can define a shorter alias for it in the config file.
Host myserver HostName example.com User myusername
With this configuration, you can connect to the server using ssh myserver.
-
Custom Usernames:You can specify a default username to use when connecting to a host. This can save you from specifying the username each time you connect.
-
Identity Files:
You can specify the identity (private key) file to use for authentication. This can be useful if you have multiple keys for different purposes.
Host github HostName github.com User git IdentityFile ~/.ssh/github_key
-
Port Forwarding and Tunneling:
You can set up local and remote port forwarding easily using the config file.
Host myserver HostName example.com User myusername LocalForward 8080 localhost:80
-
ProxyJump (Jump Host):
If you need to connect to a host via an intermediate “jump host,” you can specify it in the configuration.
Host myserver HostName internal-server User myusername ProxyJump jumpserver
-
Global Settings:
You can also set global settings that apply to all SSH connections.
ForwardX11 yes Compression yes ServerAliveInterval 60
Remember that any changes you make to the ~/.ssh/config file will only affect your SSH client’s behavior. The remote servers you’re connecting to won’t be affected by these configurations.
To learn more about the available options and syntax for the ~/.ssh/config file, you can refer to the official OpenSSH documentation or other reliable resources, such as SSH config file syntax and how-tos for configuring the OpenSSH client . It is a powerful tool with many more options than discussed above.