Using Different Ssh Config Options Based on Port

I have a situation where I have to use different login credentials on the same IP address based on the port the I use.

So and example on the command line would look like this:

ssh user1@192.168.1.2:22

and

ssh user2@192.168.1.2:2222

I have setup the following in my ~/.ssh/config file:

 Host "192.168.1.*"
   user user1
   IdentityFile ~/.ssh/id_user1
   PubkeyAuthentication yes

which works great for the user1 at port 22 scenario but is there a way to setup an alternate user and IdetityFile for user2 at port 2222?

2 Answers

I guess I should have kept searching....

SSH config host match port over on superuser.com had the answer I needed!

Basically instead of:

Host "192.168.1.*"

I'm now using:

Match host "192.168.1.*" exec "test %p = 22"

and

Match host "192.168.1.*" exec "test %p = 2222"
1

I didn't try it out, but I think the HostName option (see man ssh_config could provide you a solution:

 Host "host22"
   Hostname "192.168.1.2"
   Port 22
   user user1
   IdentityFile ~/.ssh/id_user1
   PubkeyAuthentication yes
 Host "host2222"
   Hostname "192.168.1.2"
   Port 2222
   user user2
   IdentityFile ~/.ssh/id_user2
   PubkeyAuthentication yes

With this you should be able to do:

ssh user1@host22
ssh user2@host2222

or even

ssh host22
ssh host2222

as the user name and the port are given in the config file.

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Marcus Vance

Marcus Vance

Cybersecurity & Digital Privacy Researcher

Marcus Vance is a cybersecurity auditor and technology writer dedicated to educating the public about online safety, data privacy regulations, enterprise security, and emerging cyber threats.

Share this article
Twitter Facebook Pinterest