Abbreviating hostnames
If you often have to SSH into a machine with a long host and/or network name, it can get irritating to type it every time. For example, consider the following command:
$ ssh web0911.colo.sta.solutionnetworkgroup.com
If you interact with the web0911 machine a lot, you could include a stanza like this in your ~/.ssh/config:
Host web0911 HostName web0911.colo.sta.solutionnetworkgroup.com
This would allow you to just type the following for the same result:
$ ssh web0911
Of course, if you have root access on the system, you could also do this by adding the hostname to your/etc/hosts file, or by adding the domain to your /etc/resolv.conf to search it, but I prefer the above solution as it’s cleaner and doesn’t apply system-wide.
Fixing alternative ports
If any of the hosts with which you interact have SSH processes listening on alternative ports, it can be a pain to both remember the port number and to type it in every time:
$ ssh webserver.example.com -p 5331
You can affix this port permanently into your .ssh/config file instead:
Host webserver.example.com Port 5331
This will allow you to leave out the port definition when you call ssh on that host:
$ ssh webserver.example.com
Custom identity files
If you have a private/public key setup working between your client machine and the server, but for whatever reason you need to use a different key from your normal one, you’ll be using the -i flag to specify the key pair that should be used for the connection:
$ ssh -i ~/.ssh/id_dsa.mail srv1.mail.example.com $ ssh -i ~/.ssh/id_dsa.mail srv2.mail.example.com
You can specify a fixed identity file in .ssh/config just for these hosts instead, using an asterisk to match everything in that domain:
Host *.mail.example.com IdentityFile ~/.ssh/id_dsa.mail
I need to do this for Mikrotik’s RouterOS connections, as my own private key structure is 2048-bit RSA which RouterOS doesn’t support, so I keep a DSA key as well just for that purpose.
Logging in as a different user
By default, if you omit a username, SSH assumes the username on the remote machine is the same as the local one, so for servers on which I’m called tom, I can just type:
tom@conan:$ ssh server.network
However, on some machines I might be known as a different username, and hence need to remember to connect with one of the following:
tom@conan:$ ssh -l tomryder server.anothernetwork tom@conan:$ ssh tomryder@server.anothernetwork
If I always connect as the same user, it makes sense to put that into my .ssh/config instead, so I can leave it out of the command entirely:
Host server.anothernetwork User tomryder
SSH proxies
If you have an SSH server that’s only accessible to you via an SSH session on an intermediate machine, which is a very common situation when dealing with remote networks using private RFC1918 addresses through network address translation, you can automate that in .ssh/config too. Say you can’t reach the host nathost directly, but you can reach some other SSH server on the same private subnet that is publically accessible, publichost.example.com:
Host nathost ProxyCommand ssh -q -W %h:%p public.example.com
This will allow you to just type:
$ ssh nathost
More information
The above are the .ssh/config settings most useful to me, but there are plenty more available; check man ssh_config for a complete list.
Fonte: blog.sanctum.geek.nz
Lascia un commento
Devi essere connesso per inviare un commento.