För att minska på fingerslitaget vid inloggning till flera maskiner på olika domäner via SSH kan man nyttja resolv.conf och .ssh/config. Med hjälp av dessa kan man sätta default-användarnamn och även undvika att skriva olika användarnamn för olika domäner.
I det tänkta scenariot har du fått ett login på en subdomän hos företaget example.com. Användarnamnet är ett annat än ditt normala login och du behöver logga in på flera servrar, så många att det blir opraktiskt att lista alla i .ssh/config. Målet med setupen är att istället för att behöva skriva:
ssh exampleuser@exampleserver0.long.subdomain.example.com
och
ssh exampleuser@exampleserver1.long.subdomain.example.com
bara kunna skriva följande:
ssh exampleserver0
och
ssh exampleserver1
För att undvika att behöva skriva hela domännamnen lägger vi till en search-entry i resolv.conf
. I Debian genereras resolv.conf
av programmet resolvconf
, så därför editerar vi istället /etc/resolvconf/resolv.conf.d/base
och lägger till raden:
search long.subdomain.example.com
Du kan sedan generera om resolv.conf
med kommandot ”resolvconf -u
”. Detta gör att du kan ansluta till servrarna utan att ange hela domännamnet, dvs att du kan ansluta med t.ex:
ssh exampeluser@exampleserver0
För att knyta det avvikande användarnamnet till denna subdomän använder vi oss sedan av .ssh/config
där vi lägger till raderna:
Host exampleserver* User exampleuser
På detta sätt har vi nått vårt mål. Dock väljs användarnamnet ”exampleuser
” så fort ett hostname börjar på ”exampleserver”. Varför gjorde vi så? Jo, det visar sig att .ssh/config
-entries inte matchas mot fulla domännamn, utan endast mot argumentet som ges till ssh
(se ‘canonicalized host name’ i ssh_config).
På grund av denna begränsning måste vi använda mönstermatchning på endast hostnamnet. Om hostnamnen inte skiljer på ett sådant sätt att mönstermatchning lämpar sig är ett ett annat sätt att komma runt detta att matcha mot del-domäner. Genom att till exempel konfigurera resolvconf
med:
search subdomain.example.com
kan du konfa ssh med:
Host *.long User exampleuser
Observera att denna lösning gör att du får logga in till servrarna med:
ssh exampleserver0.long
och
ssh exampleserver1.long