A página do manual diz o seguinte:
Hospedeiro
Host Restringe as seguintes declarações (até a próxima palavra-chave Host) apenas para aqueles hosts que correspondem a um dos padrões fornecidos após a palavra-chave. Se mais de um padrão for fornecido, 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 uma entrada negada for correspondida, a entrada Host será ignorada, independentemente de outros padrões na linha corresponderem. Portanto, correspondências negadas são úteis para fornecer exceções para correspondências curinga.
Veja PADRÕES para mais informações sobre padrões.
Nome de anfitrião
HostName Especifica o nome do host real no qual efetuar login. Isso pode ser usado para especificar apelidos ou abreviações para hosts. Se o nome do host contiver a sequência de caracteres `% h ', isso será substituído 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 (na linha de comando e nas especificações HostName).
Por exemplo, quando eu quero criar uma configuração SSH para o GitHub, o que Host e HostName devem ser respectivamente?
Host
é a string que o usuário fornece como entrada na CLI ao invocar o SSH;HostName
é a string que a vontade cliente SSH saída através da rede ao tentar se conectar ao servidor.Respostas:
Para o github.com, você
~/.ssh/config
pode se parecer com issoPara hostname: como o homem diz, permite especificar a abreviação de host. Por exemplo, se você se
~/.ssh/config
parece com issoEntão quando você digita
ssh host1
você efetua login no host1.example.comssh host2
faça login em outro domínio.comfonte
~/.ssh/config
exemplo?Em uso simples:
Host
é o nome do host real e não háHostName
OU
Host
é o apelido do host eHostName
é o nome do host real.Exemplo simples:
Nota: A página de manual está tecnicamente correta, apenas redigida um pouco estranhamente. 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.
fonte
Recentemente, eu queria fazer algo com o host e o nome do host, mas esqueci a sintaxe exata ... mas pesquisar no Google era uma bagunça e a página de manual não era muito útil. Então, supondo que existam outros que tenham a mesma necessidade, aqui estão meus petiscos.
Host especifica o argumento da linha de comando e pode ser considerado como a) nome real do host / IP, b) abreviação, c) alias. O HostName é o nome do host / IP real da máquina à qual você está se conectando. No campo HostName, você pode usar% h como a cadeia de nome do host especificada na linha de comando. (Essa foi a parte que eu queria usar no meu exemplo.)
Então, digamos que você tenha um conjunto de hosts em que o nome do host comece com my-proj-host -... e todos eles estejam no domínio .my.proj.domain.com, e eu preciso fazer login usando a chave ssh específica my-proj-id-rsa e ID do usuário específico my-proj-user. Para facilitar minha vida, eu adicionaria o seguinte ao arquivo ~ / .ssh / config
Agora, eu posso digitar
Sem a configuração, isso teria sido
economizando um pouco de digitação (e erros de digitação).
fonte