¿Qué se priorizará en un conflicto entre ~/.ssh/config hostname y /etc/hosts?

¿Qué se priorizará en un conflicto entre ~/.ssh/config hostname y /etc/hosts?

¿Qué pasa si un host se define /etc/hostscomo:

192.168.0.100   server

y uno se define ~/.ssh/configcomo:

 Host    server
         HostName    192.168.0.101

y ingresas por ssh al servidor: ssh server.

¿Cómo se resolvería tal conflicto? Supongo que uno tiene mayor prioridad que el otro.

Respuesta1

Si lo hace, ssh serverla parte del servidor podría ser un nombre de host real o algún "apodo" interno de ssh. ssh primero busca algún apodo en .ssh/config, si encuentra una configuración allí, la usará. Si no encuentra una configuración, asume un nombre de host real e intenta resolverlo mediante /etc/host y dns.

Respuesta2

El archivo ~/.ssh/configno tiene nada que ver /etc/hosts. Más bien es un archivo de configuración para sshusar si existe.

Puede ver que sshse refiere a este archivo antes de hacer cualquier otra cosa usando el modificador detallado, -v, a ssh.

Entrada de host en ~/.ssh/config

Aquí tengo una entrada en mi ~/.ssh/configarchivo para un servidor llamado "skinner". Estoy habilitando el nivel de depuración 3 al incluir -vlos modificadores de 3.

Ejemplo
$ ssh -vvv skinner 
OpenSSH_6.2p2, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /home/saml/.ssh/config
debug1: /home/saml/.ssh/config line 8: Applying options for *
debug1: /home/saml/.ssh/config line 35: Applying options for skinner
debug1: /home/saml/.ssh/config line 55: Applying options for *
debug3: cipher ok: arcfour [arcfour,blowfish-cbc]
debug3: cipher ok: blowfish-cbc [arcfour,blowfish-cbc]
debug3: ciphers ok: [arcfour,blowfish-cbc]
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 50: Applying options for *
debug1: auto-mux: Trying existing master
...

En lo anterior puede ver que sshestá haciendo uso de esta definición y ni siquiera consulta las funciones de resolución de nombres del sistema.

No hay entrada de host en ~/.ssh/config

Si no hay una entrada correspondiente en el ~/.ssh/configarchivo, sshconsultará la resolución DNS del sistema para averiguar cómo conectarse a un nombre de host que se haya especificado.

Ejemplo
$ ssh -vvv skinner
OpenSSH_6.2p2, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /home/saml/.ssh/config
debug1: /home/saml/.ssh/config line 8: Applying options for *
debug1: /home/saml/.ssh/config line 55: Applying options for *
debug3: cipher ok: arcfour [arcfour,blowfish-cbc]
debug3: cipher ok: blowfish-cbc [arcfour,blowfish-cbc]
debug3: ciphers ok: [arcfour,blowfish-cbc]
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 50: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/home/saml/.ssh/master-saml@skinner:22" does not exist
debug2: ssh_connect: needpriv 0
debug1: Connecting to skinner [192.168.1.3] port 22.
debug1: Connection established.

Aquí puede ver que sshestá consultando el sistema para averiguar la dirección IP del nombre de host "skinner".

NOTA:Puede utilizar getentpara buscar nombres de host en su sistema:

$ getent hosts skinner
192.168.1.3     skinner.dom.net

Respuesta3

Generalmente, para el software Unix en general, las configuraciones específicas del usuario (en este caso ~/.ssh/config) anularían las configuraciones de todo el sistema (en este caso /etc/hosts); por lo tanto, la configuración en ~/.ssh/configtendría mayor prioridad.

información relacionada