Episode: 386
Title: HPR0386: SSH config file
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0386/hpr0386.mp3
Transcribed: 2025-10-07 19:32:49

---

Ummm...
Hello, my name is Ken Fallon, this is another episode of Hacker Public Radio.
This episode is on the SSH config file which allows you to specify commonly used SSH settings
in a file so that you don't need to retype them every single time.
When people are using SSH client, they quite often come across two things.
The first is that you have long user names and host names for machines out on the internet
that you need to connect to and also you might want to set up a port forward for one reason
or another.
So say for example that you have a dynamic address from your ISP and you've registered a
dynamic DNS host name and that host name is my name dot dynamic DNS dot org and you use
a name at home is different to the one that you're logged in and work so you need to
put in user name in front of that so you would typically use SSH space username as the name
of my host dot dynamic DNS dot org.
Now that's a lot of typing so what you can do is create a little shortcut to tell SSH
but you don't need to do that every time.
So if you open up a text editor you'll find a hidden directory called dot SSH in your home
directory.
And in there if you don't have a file called config you can create one and you could simplify
all that by creating the words host space and home for instance.
And then on a new line you type in user space and the name that you are using as you use
a name and then the next line you type in host name space and the long dynamic DNS address
that you have.
So then on your command line once you save that file any other anytime that you want
to connect to your home machine you just need to type in SSH space home and regardless
of what DNS or IP address or whatever that you specified in the config file you'll be
able to connect to that and it's not actually using DNS at this point it's using whatever
entry is specified there for the host name.
So even though you might be logged in as work user on your work machine and you have
a home user called home user it uses what's in the config file.
So a lot of these examples will be in the show notes for this episode.
I kind of find that quite handy and convenient a lot of the times.
Another thing I tend to do is say I want to do a port forward so you can use the minus
capital L sign on the command line and then do the port forwarding that way.
So if you want to basically create a tunnel from 8080 to your home machine and port 80
what you would do is under that section where you have host home and a user home user host
name my machine that dynamic DNS dot org and then under that you will put in local forward
space 8080 space the internal IP address of the machine that you want to connect to.
So if it's a non-rotable IP address might be something like 192.168.1 that I don't know
100 and then we call on 80.
So what that will do is every time that you log in to the home it will create a it will
attempt to create a tunnel so that your local host port 8080 and that machine is automatically
redirected to port 80.
I've just gone through some of the more interesting topics here.
Another thing that you might do is to stop people connecting to port 22 yeah I know it's
security by obscurity but why not take a quick win if you can a lot of people will have
their SSH server listening on a different port let's call it 1 2 3 4.
So under as another entry under your host home section you can put in the word port space
1 2 3 4 and what that will do is instead of connecting a port 22 as normal if you type
in SSH space home it will use the port 1 2 3 4 instead all very convenient.
So that's all kind of cool if you do a man SSH anything that you can normally do with SSH
you find yourself doing that all the time regularly you can usually pop that into your SSH config file.
There's a full man page if you type man space SSH underscore config it'll give you all the options
that you can put into your config file. That's the sort of basic stuff that I think a lot of
listeners would use. Some of the more specific stuff that I've used in the past has been doing
remote forwards where I would I'm not really going to go into the syntax of these but I'll just
give you an example of how possible. So where you have a bastion host and you need to SSH to
this bastion host and then from that bastion host you need to connect to another machine and then
to another machine. What you can do is do port forwards through that so that you set up the
connection once and it sets up another connection another connection another connection for your
automatically so that's kind of cool. One thing that you might want to do is have a different
identity file for different machines on the net so for instance you might have one identity file for
your for your hosting company. Yeah you might have another identity file for your brother's machine
that you're allowed to log into and that way you know if one key is compromised then it's you
kind of limiting the the compromise. So say for example you have a special identity file for
your you know and then by identity file I mean an SSH key so you have a separate SSH key generated
for each machine that you want to log into. So if somebody compromises the key on your ISPs
box for instance while they don't have the keys to the kingdom they can't connect into the
machine at home instead of using the default home directory dot SSH forward slash ID underscore
dsa dot pub which they would use as a public file generally. What you can do is you can create
another set of keys and you know save that somewhere so let's let's say for the sake of argument
we're going to use the identity file ISP underscore ID underscore dsa dot pub and yeah the private key
obviously there will be IS home directory dot SSH forward slash ISP underscore ID dot dsa okay
well simply only need to do is under your host home section or in this case it would be host ISP
you would have user ISP user host name the host name of the ISP which might be an IP address either
that works as well and then the next line would be identity file a space and where the path to
the identity file say tilde for the home directory forward slash dot SSH forward slash ISP underscore
ID dot dsa dot pub. So for example a lot of people will have SSH clients set up to use protocol
2 and 1 and 1 has has been proven to have some vulnerabilities in it already so what you can do
is you can at the top of that file I generally put in protocol space 2 normally it's a protocol
space 2 comma 1 and what that will do is if protocol 2 isn't available then it'll switch back to 1
another line I have in there is forward x11 to yes which will mean that I don't need to use the
minus capital X so that any accessions if I connect to a machine and I type I don't know conqueror
for instance then the web browser and the remote machine is open on my desktop so rather than
doing poor forwarding on all that sort of thing I can SSH into my home machine and then you just type
Firefox on the command line and Firefox from my home machine comes up on my work machine for
instance there's a security risk involved in that and you can read the man pages about you know
what it is read the man pages make a decision yourself on whether you want to enable that or not
but if you find yourself using the minus x anyway then that's something that you can do
another one is the forwarding agent so if you've got a long complicated key
what I tend to do is I use the SSH ad command I have SSH agent enabled and what that does is that
memorizes in very broad terms it memorizes the password for the keys that I I'm unlocking
and once I unlock the keys I do that first thing in the morning I have a cup of coffee
entry in my 28 character keys and then I'm set to go for the day that then passes through
the authentication for the for the all the keys on all the servers that I need to log into
so if I connect via a bastion server for instance I use my key I connect into that machine
and then when I want to connect to a machine that's connected to a bastion server so it's like a
stepping stone server the SSH agent will allow me to pass my authentication from the stepping
stone server to the server I want to work on on the other side of that connection so that's
that's pretty much that one weird one that I did come across was related to
gss api authentication I have that set to gss api authentication to know the reason why that's a
weird one is if you read the man pages but it says by default it's set to know what on devian
distributions which Ubuntu is and kabuntu and devian itself that is set to yes what that's all
about is that's a mechanism for linking in a car boss authentication but it causes it to do a DNS
query every time on the hostname that you connect into and if you connect into a machine that doesn't
have DNS set up for it then you're going to get a timeout while it does that initial connection
and that used to drive me nuts and work when you connect into a machine and you have a timeout
for low parentries in the first time and then you would log in subsequently during the day and
that would be absolutely fine you reset your machine and the next thing you'd have this timeout
is just very frustrating and that it turns out to be that DNS thing so that is one of the things
that I set one thing that I tend to do is I will set up one connection to do my port forwarding
home and I'll tend to run that in the background without a shell so that you know I can connect to
my web server home and I have all my port forwardings done and I've got my agents running and all
that sort of stuff but then if later I wanted to connect into that machine during the day I'd
have a different section so I have two sections for my home machine so one would be called host
host home dash tunnels for instance and I only connect to that once a day and that sets up all
the tunnels and then the other one will be called host home and the only thing that that actually
has in is my username the host name and the port so I don't do any forwarding or anything
anything weird with that one and the reason for that is if you set up all your port forwarding
and you connect in you know a second SSH session then it gives you an armistice to say that it
can't create the tunnels because they've already been created it's not the end of the world and
I mean a lot of the times you might be using something like screened anyway so yeah it's just
the way you want to work that is pretty much it's about the SSH config file before you hear this
you'll probably hear some feedback on the bad apples that are sent into Tlattu if you don't hear
that feedback and Tlattu probably hasn't played it yet and tune in tomorrow for another exciting
episode on on Hacker Public Radio and as I say I'm Vulkan live long
prosper thank you for listening to Hacker Public Radio HPR sponsored by caro.net so head on over
