La página del manual dice esto:
Anfitrión
Host Restringe que las siguientes declaraciones (hasta la siguiente palabra clave Host) sean solo para aquellos hosts que coincidan con uno de los patrones dados después de la palabra clave. Si se proporciona más de un patrón, deben estar separados por espacios en blanco. Se puede usar un solo '*' como patrón para proporcionar valores predeterminados globales para todos los hosts. El host es el argumento del nombre de host dado en la línea de comando (es decir, el nombre no se convierte en un nombre de host canonicalizado antes de la coincidencia).
Se puede negar una entrada de patrón con el prefijo con un signo de exclamación (`! '). Si se coincide con una entrada negada, se ignora la entrada del Host, independientemente de si coinciden otros patrones en la línea. Por lo tanto, las coincidencias negadas son útiles para proporcionar excepciones para las coincidencias con comodines.>
Ver PATRONES para más información sobre patrones.
HostName
HostName Especifica el nombre de host real para iniciar sesión. Esto se puede usar para especificar apodos o abreviaturas para hosts. Si el nombre de host contiene la secuencia de caracteres '% h', se reemplazará con el nombre de host especificado en la línea de comando (esto es útil para manipular nombres no calificados). El valor predeterminado es el nombre dado en la línea de comando. Las direcciones IP numéricas también están permitidas (tanto en la línea de comando como en las especificaciones de HostName).
Por ejemplo, cuando quiero crear una configuración SSH para GitHub, ¿qué deben ser Host y HostName respectivamente?
Host
es la cadena que el usuario da como entrada en la CLI al invocar SSH;HostName
es la cadena que la voluntad cliente SSH de salida por la red al intentar conectarse al servidor.Respuestas:
Para github.com,
~/.ssh/config
podría verse asíPara el nombre de host: como dice man, le permite especificar la abreviatura de host. Por ejemplo, si te
~/.ssh/config
ves asíEntonces cuando escribes
ssh host1
en realidad inicias sesión en host1.example.comssh host2
iniciar sesión en anotherdomain.comfuente
~/.ssh/config
ejemplo quiso decir 'Nombre de host' en lugar de 'Host' ?En uso simple:
Host
es el nombre de host real y no hayHostName
O
Host
es el apodo del host yHostName
es el nombre de host real.Ejemplo simple:
Nota: La página de manual es técnicamente correcta, está redactada de manera un poco extraña. Añadiría algunas palabras más para mayor claridad:
HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.
fuente
Hace poco quería hacer algo con el host y el nombre de host, pero olvidé la sintaxis exacta ... pero buscar en Google fue un desastre y la página de manual no fue muy útil. Entonces, suponiendo que haya otros que tengan la misma necesidad, aquí están mis cositas.
El host especifica el argumento de la línea de comando y podría considerarse como a) nombre / IP del host real, b) taquigrafía, c) alias. HostName es el nombre de host / IP real de la máquina a la que se está conectando. En el campo HostName, puede usar% h como la cadena de nombre de host que especifique en la línea de comando. (Esta fue la parte que quería usar en mi ejemplo).
Entonces, supongamos que tiene un conjunto de hosts donde el nombre de host comienza con my-proj-host -... y todos están en el dominio .my.proj.domain.com, y necesito iniciar sesión en ellos utilizando una clave ssh específica my-proj-id-rsa e ID de usuario específico my-proj-user. Para hacer mi vida más fácil, agregaría lo siguiente al archivo ~ / .ssh / config
Ahora puedo escribir
Sin la configuración, eso hubiera sido
ahorrando un poco de tipeo (y errores tipográficos).
fuente