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/config
pode 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/config
estiver assim
Host host1
HostName host1.example.com
Host host2
HostName anotherdomain.com
Então quando você digita
ssh host1
você realmente faz loginhost1.exemplo.comssh host2
logar 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).