
¿Qué pasa si un host se define /etc/hosts
como:
192.168.0.100 server
y uno se define ~/.ssh/config
como:
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 server
la 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/config
no tiene nada que ver /etc/hosts
. Más bien es un archivo de configuración para ssh
usar si existe.
Puede ver que ssh
se 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/config
archivo para un servidor llamado "skinner". Estoy habilitando el nivel de depuración 3 al incluir -v
los modificadores de 3.
$ 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 ssh
está 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/config
archivo, ssh
consultará la resolución DNS del sistema para averiguar cómo conectarse a un nombre de host que se haya especificado.
$ 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 ssh
está consultando el sistema para averiguar la dirección IP del nombre de host "skinner".
NOTA:Puede utilizar getent
para 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/config
tendría mayor prioridad.