Qual é a diferença entre Host e HostName no SSH Config?

17

A página man diz isso:

Anfitrião

Host Restricts the following declarations (up to the next Host keyword) to be only for those hosts that match one of the patterns given after the keyword. If more than one pattern is provided, they should be separated by whitespace. A single '*' as a pattern can be used to provide global defaults for all hosts. The host is the hostname argument given on the command line (i.e. the name is not converted to a canonicalized host name before matching).

A pattern entry may be negated by prefixing it with an exclamation mark ('!'). If a negated entry is matched, then the Host entry is ignored, regardless of whether any other patterns on the line match. Negated matches are therefore useful to provide exceptions for wildcard matches.>

See PATTERNS for more information on patterns.

HostName

HostName Specifies the real host name to log into. This can be used to specify nicknames or abbreviations for hosts. If the hostname contains the character sequence '%h', then this will be replaced with the host name specified on the command line (this is useful for manipulating unqualified names). The default is the name given on the com- mand line. Numeric IP addresses are also permitted (both on the command line and in HostName specifications).

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

    
por 0xcafebabe 10.11.2012 / 03:25

3 respostas

13

Para o github.com, seu ~/.ssh/config pode ter esta aparência

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

Para nome do host: como diz o homem, ele permite que você especifique a abreviação do host. Por exemplo, se o seu ~/.ssh/config se parece com isso

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

Então, quando você digita

  • ssh host1 você realmente faz login em host1.example.com
  • ssh host2 de login para anotherdomain.com
por 10.11.2012 / 04:47
2

Eu sei que essa pergunta é super antiga, mas descobrir a resposta certa me deixava louco (porque as explicações de man parecem contraditórias).

Em uso simples:

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

OR

Host é o apelido do host & 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>"

Observação: descobri que apelidos podem ser problemáticos em todos os serviços que fornecem exemplos de comandos, por exemplo:

$ cat ~/.ssh/config
Host git
    Hostname github.com
    User <username>
    IdentityFile <path_to_private_key>

$ git clone [email protected]:<username>/<project>.git
Permission denied (publickey). # Failure

Você precisa editar o comando de exemplo para usar seu apelido ou colocar o nome do host real no campo Host .

$ cat ~/.ssh/config
Host github.com
    User <username>
    IdentityFile <path_to_private_key>

$ git clone [email protected]:<username>/<project>.git
Cloning... # Success!
    
por 09.05.2017 / 00:46
1

Eu recentemente quis fazer algo com host e hostname, mas esqueci a sintaxe exata ... mas googling sobre isso foi uma bagunça e man page não foi muito útil. Então, supondo que haja outros que tenham a mesma necessidade, aqui estão meus petiscos.

O host especifica o argumento da linha de comando e pode ser considerado como a) nome do host / IP real, b) abreviado, c) alias. O HostName é o nome de host / 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. (Esta foi a parte que eu queria usar no meu exemplo.)

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

Host my-proj-host*

HostName %h.my.proj.domain.com

User my-proj-user

IdentityFile ~/.ssh/my-proj-id-rsa

Agora, posso digitar

ssh my-proj-host-1234

Sem a configuração, isso teria sido

ssh -i ~/.ssh/my-proj-id-rsa [email protected]

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

    
por 16.02.2018 / 19:40

Tags