¿Cómo enviar ssh a servidores internamente por nombre de host sin nombre de dominio?

¿Cómo enviar ssh a servidores internamente por nombre de host sin nombre de dominio?

Necesito iniciar sesión en varios servidores del trabajo para realizar mi trabajo. Me estoy cansando de escribir el FQDN de un servidor para acceder. Estoy iniciando/cerrando sesión a través de ssh en nuestra propia red privada. Estoy 99% seguro de que está en nuestra propia red privada porque todos los servidores tienen dirección IP 10.xyz. ¿Hay alguna manera de acceder a servidores mediante ssh solo con el nombre de host y no con el nombre de dominio?

Contamos con servidores en múltiples países. La forma en que se nombran nuestros servidores es muy larga. Se denomina así:

hostname.country.domainname.com

Tengo túnel carpiano escribiendo ssh [email protected]

... cada vez que accedo a uno de nuestros servidores. Si estoy en los EE. UU. e intento acceder a otro host que esté en los EE. UU., puedo simplemente escribir ssh me@hostname2y me conecto bien. Sin embargo, si estoy en los EE. UU. e intento conectarme a un servidor en Inglaterra, no puedo escribir ni conectarme a .ssh [email protected]hostname3

La solución que hice fue configurar un alias en mi archivo ~/.ssh/config para algunos de los servidores. Sin embargo, no creo que sea factible agregar más de 1000 servidores a ese archivo. Ya agregué más de 20 servidores y mis compañeros de trabajo piensan que estoy loco, aunque creo que ellos están locos por escribir el FQDN cuando navegan.

¿Existe alguna forma sencilla de configurar algo para que no tengamos que escribir nuestro nombre de dominio.com cada vez?

Respuesta1

Puede usar comodines y usarlo %hen su configuración.

p.ej

Host *.eng
  Hostname %h.domainname.com

Ahora, cuando lo hagas, ssh foo.engintentará conectarse a foo.eng.domainname.com.

También puedes agregar otras opciones a esta configuración; por ejemplo, forzar el nombre de usuario

Host *.eng
  Hostname %h.domainname.com
  User me

Ahora, cuando lo haga, ssh foo.engintentará conectarse foo.eng.domainname.comcomo usuario me.

% ssh foo.eng
ssh: Could not resolve hostname foo.eng.domainname.com: Name or service not known

(bueno, obviamente recibo un error antes de que no sea un nombre de host válido para mí).

Así que ahora sólo necesitas una regla por país.

Respuesta2

Podrías usar la CanonicalDomainsopción en tu configuración ssh.

Agregar lo siguiente a su archivo de configuración ssh hará que ssh intente agregarse domainname.coma cualquier host que tenga como máximo 1 punto en su nombre:

CanonicalizeHostname yes
CanonicalDomains domainname.com

Con esta configuración, ssh foo.engprimero se intentará foo.eng.domainname.comy se recurrirá a él foo.engsi no se puede encontrar el host. Del mismo modo, ssh github.comprimero lo intentaremos github.com.domainname.com, por lo que si desea conectarse a GitHub, su servidor DNS no debería devolver registros de hosts no existentes.

Se CanonicalizeMaxDotspuede utilizar para controlar cuántos puntos pueden aparecer en el nombre de host antes de que ssh lo considere completamente calificado y no agregue domainname.com. el valor predeterminado es 1, lo que debería ser suficiente para usted dado el esquema que tiene actualmente, pero si alguna vez llega a algo así, hostname.city.countrynecesitará aumentarlo.

Respuesta3

si agregas

search domainname.com

Para acceder /etc/resolv.confy usar hostname.country( sshy otros programas de red, de hecho) se agregarán domainname.comautomáticamente 1 .

No creo que agregar dominios de diferentes países a su searchruta sea una buena idea porque puede obtener un comportamiento inesperado si dos servidores en dos países diferentes comparten el mismo nombre de host .

Creo que este método es mejor que cambiar la sshconfiguración porque esto permite hostname.countryresolver independientemente del programa que estés usando ( telnet, VNC,...).

Verresolv.conf(5)


1 Más exactamente, se agregará domainname.comsi no se puede resolver hostname.countrypor sí solo.

2 En tal escenario, hostnamese resolverá en el servidor del país cuyo dominio aparece primero en la searchruta.

información relacionada