¿Cuál es la diferencia entre Host y HostName en SSH Config?

¿Cuál es la diferencia entre Host y HostName en SSH Config?

La página de manual dice esto:

Anfitrión

Host Restringe las siguientes declaraciones (hasta la siguiente palabra clave Host) para que sean solo para aquellos hosts que coincidan con uno de los patrones indicados después de la palabra clave. Si se proporciona más de un patrón, deben estar separados por espacios en blanco. Se puede utilizar un único `*' como patrón para proporcionar valores predeterminados globales para todos los hosts. El host es el argumento del nombre de host proporcionado en la línea de comando (es decir, el nombre no se convierte a un nombre de host canonicalizado antes de hacer coincidir).

Una entrada de patrón se puede negar anteponiendo un signo de exclamación (`!'). Si una entrada negada coincide, entonces la entrada del Host se ignora, independientemente de si coinciden otros patrones en la línea. Por lo tanto, las coincidencias negadas son útiles para proporcionar excepciones a las coincidencias con comodines.>

Consulte PATRONES para obtener más información sobre patrones.

Nombre de host

HostName Especifica el nombre de host real para iniciar sesión. Esto se puede utilizar para especificar apodos o abreviaturas para los hosts. Si el nombre de host contiene la secuencia de caracteres `%h', entonces será reemplazada 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. También se permiten direcciones IP numéricas (tanto en la línea de comando como en las especificaciones de HostName).

Por ejemplo, cuando quiero crear una configuración SSH para GitHub, ¿cuáles deberían ser Host y HostName respectivamente?

Respuesta1

Para github.com tu ~/.ssh/configpodría verse así

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

Para el nombre de host: como dice el hombre, le permite especificar una abreviatura para el host. Por ejemplo, si te ~/.ssh/configves así

Host host1
    HostName host1.example.com
Host host2
    HostName anotherdomain.com

Luego cuando escribes

  • ssh host1realmente inicias sesión enhost1.ejemplo.com
  • ssh host2iniciar sesión enotrodominio.com

Respuesta2

En uso simple:

Hostes el nombre de host real y no hayHostName

O

Hostes el apodo del host y HostNamees el nombre de host real.

Ejemplo sencillo:

$ cat ~/.ssh/config
Host dev
    Hostname <hostname>
    User <username>
    IdentityFile <path_to_private_key>

$ ssh dev
# Equivalent to "ssh -i <path_to_private_key> <username>@<hostname>"

Nota: La página de manual es técnicamente correcta, sólo que está redactada de forma un poco extraña. Agregarí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.

Respuesta3

Recientemente quise 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.

Host especifica el argumento de la línea de comando y podría considerarse como a) nombre de host/IP real, b) taquigrafía, c) alias. El nombre de host es el nombre de host/IP real de la máquina a la que se está conectando. En el campo Nombre de host, puede utilizar %h como la cadena de nombre de host que especifique en la línea de comando. (Esta era la parte que quería usar en mi ejemplo).

Entonces, digamos 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 usando una clave ssh específica. my-proj-id-rsa y el ID de usuario específico my-proj-user. Para hacerme la vida más fácil, agregaría lo siguiente al archivo ~/.ssh/config

Hospedar mi-proyecto-host*

Nombre de host %h.mi.proj.dominio.com

Usuario mi-proj-usuario

Archivo de identidad ~/.ssh/my-proj-id-rsa

Ahora puedo escribir

ssh mi-proyecto-host-1234

Sin la configuración, eso habría sido

ssh -i ~/.ssh/mi-proj-id-rsa[correo electrónico protegido]

ahorrando un poco de escritura (y errores tipográficos).

información relacionada