My understanding of the way ~/.ssh/config works is that each 'Host ' line takes effect for any host matching after that point in the config file.
I have a number of personal servers and work servers that I need to connect to. I'm trying to do something like the following:
# General Settings ControlMaster auto ControlPath ~/.ssh/controlmaster/%r@%h:%p ForwardAgent yes ForwardX11 yes GSSAPIAuthentication no PubkeyAuthentication yes # Personal Servers Host * User harleypig IdentityFile ~/.ssh/personal_id_rsa Host host1 Hostname host1.com Host host2 Hostname host2.com # Work Servers Host * User alan.young IdentityFile ~/.ssh/work_id_rsa Host work1 Hostname work1.companyserver.com Host work2 Hostname work2.companyserver.com Host * User devuser Host dev1 Hostname dev1.companyserver.com Host dev2 Hostname dev2.companyserver.com
The docs seem to indicate that host1 and host2 should use 'personal_id_rsa' and the user harleypig. work1, work2, dev1 and dev2 should use 'work_id_rsa' and the first two should be the user 'alan.young' and dev1 and dev2 should be the user 'devuser'
However, this is not happening. Whatever 'Host *' I put first is what all of the following hosts try to connect with. Am I misunderstanding or missing something?