Qual é a diferença entre Host e HostName na configuração SSH?

Qual é a diferença entre Host e HostName na configuração SSH?

A página de manual diz o seguinte:

Hospedar

Host Restringe as seguintes declarações (até a próxima palavra-chave Host) apenas para os hosts que correspondem a um dos padrões fornecidos após a palavra-chave. Se for fornecido mais de um padrão, eles deverão ser separados por espaços em branco. Um único `*' como padrão pode ser usado para fornecer padrões globais para todos os hosts. O host é o argumento do nome do host fornecido na linha de comando (ou seja, o nome não é convertido em um nome de host canônico antes da correspondência).

Uma entrada de padrão pode ser negada prefixando-a com um ponto de exclamação (`!'). Se houver correspondência com uma entrada negada, a entrada Host será ignorada, independentemente de quaisquer outros padrões na linha corresponderem. As correspondências negadas são, portanto, úteis para fornecer exceções para correspondências curinga.>

Consulte PADRÕES para obter mais informações sobre padrões.

Nome de anfitrião

HostName Especifica o nome real do host no qual efetuar login. Isto pode ser usado para especificar apelidos ou abreviações para hosts. Se o nome do host contiver a sequência de caracteres `%h', então ela será substituída pelo nome do host especificado na linha de comando (isso é útil para manipular nomes não qualificados). O padrão é o nome fornecido na linha de comando. Endereços IP numéricos também são permitidos (tanto na linha de comando quanto nas especificações HostName).

Por exemplo, quando desejo criar uma configuração SSH para GitHub, quais devem ser Host e HostName respectivamente?

Responder1

Para github.com, você ~/.ssh/configpode ficar assim

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

Para nome de host: como o homem diz, permite especificar uma abreviatura para host. Por exemplo, se você ~/.ssh/configestiver assim

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

Então quando você digita

  • ssh host1você realmente faz loginhost1.exemplo.com
  • ssh host2logar emoutrodominio.com

Responder2

Em uso simples:

Hosté o nome do host real e não háHostName

OU

Hosté o apelido do host e HostNameé o nome do host real.

Exemplo simples:

$ 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: A página de manual está tecnicamente correta, apenas com uma redação um pouco estranha. Eu acrescentaria mais algumas palavras para maior clareza:HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.

Responder3

Recentemente, quis fazer algo com host e nome de host, mas esqueci a sintaxe exata... mas pesquisar sobre isso no Google foi uma bagunça e a página de manual não foi muito útil. Então, supondo que haja outras pessoas que tenham a mesma necessidade, aqui estão minhas dicas.

Host especifica o argumento da linha de comando e pode ser considerado como a) nome/IP real do host, b) abreviação, c) alias. O HostName é o nome/IP real da máquina à qual você está se conectando. No campo HostName, você pode usar %h como a string do nome do host especificada na linha de comando. (Essa era a parte que eu queria usar no meu exemplo.)

Então, digamos que você tenha um conjunto de hosts onde o nome do host começa com my-proj-host-... e todos eles estão no domínio .my.proj.domain.com, e preciso fazer login neles usando uma chave ssh específica my-proj-id-rsa e ID de usuário específico my-proj-user. Para facilitar minha vida, eu adicionaria o seguinte ao arquivo ~/.ssh/config

Hospedar meu-proj-host*

Nome do host %h.my.proj.domain.com

Usuário meu-proj-usuário

Arquivo de identidade ~/.ssh/my-proj-id-rsa

Agora posso digitar

ssh meu-proj-host-1234

Sem a configuração, isso teria sido

ssh -i ~/.ssh/my-proj-id-rsa[e-mail protegido]

economizando um pouco de digitação (e erros de digitação).

informação relacionada