Arbeta med SSH över flera domäner

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