O que será priorizado em um conflito entre ~ / .ssh / config hostname e / etc / hosts?

2

E se um host for definido em /etc/hosts como:

192.168.0.100   server

e um é definido em ~/.ssh/config como:

 Host    server
         HostName    192.168.0.101

e você ssh no servidor: ssh server .

Como esse conflito seria resolvido? Eu acho que um tem maior prioridade que o outro.

    
por lindhe 18.11.2014 / 00:04

3 respostas

2

Se você fizer ssh server , a parte do servidor poderá ser um nome de host real ou algum "apelido" interno de ssh. O ssh primeiro procura por algum apelido em .ssh / config, se ele encontrar uma configuração lá, ele irá usar isto. Se não encontrar uma configuração, ela assume um nome de host real e tenta resolvê-lo via / etc / host e dns.

    
por 18.11.2014 / 01:03
1

O arquivo ~/.ssh/config não tem nada a ver com /etc/hosts . Em vez disso, é um arquivo de configuração para usar ssh , se existir.

Você pode ver que ssh refere-se a esse arquivo antes de fazer qualquer outra coisa usando a opção detalhada, -v , para ssh .

Entrada do host em ~ / .ssh / config

Aqui eu tenho uma entrada no meu arquivo ~/.ssh/config para um servidor chamado "skinner". Estou habilitando o nível de depuração 3, incluindo 3% de-v de switches.

Exemplo
$ ssh -vvv skinner 
OpenSSH_6.2p2, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /home/saml/.ssh/config
debug1: /home/saml/.ssh/config line 8: Applying options for *
debug1: /home/saml/.ssh/config line 35: Applying options for skinner
debug1: /home/saml/.ssh/config line 55: Applying options for *
debug3: cipher ok: arcfour [arcfour,blowfish-cbc]
debug3: cipher ok: blowfish-cbc [arcfour,blowfish-cbc]
debug3: ciphers ok: [arcfour,blowfish-cbc]
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 50: Applying options for *
debug1: auto-mux: Trying existing master
...

Acima, você pode ver que ssh está fazendo uso desta definição e nem mesmo consultando os recursos de resolução de nomes do sistema.

Nenhuma entrada de host em ~ / .ssh / config

Se não houver uma entrada correspondente no arquivo ~/.ssh/config , ssh consultará a resolução DNS do sistema para descobrir como se conectar a um nome de host especificado.

Exemplo
$ ssh -vvv skinner
OpenSSH_6.2p2, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /home/saml/.ssh/config
debug1: /home/saml/.ssh/config line 8: Applying options for *
debug1: /home/saml/.ssh/config line 55: Applying options for *
debug3: cipher ok: arcfour [arcfour,blowfish-cbc]
debug3: cipher ok: blowfish-cbc [arcfour,blowfish-cbc]
debug3: ciphers ok: [arcfour,blowfish-cbc]
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 50: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/home/saml/.ssh/master-saml@skinner:22" does not exist
debug2: ssh_connect: needpriv 0
debug1: Connecting to skinner [192.168.1.3] port 22.
debug1: Connection established.

Aqui você pode ver que ssh está consultando o sistema para descobrir o endereço IP do hostname "skinner".

OBSERVAÇÃO: você pode usar getent para procurar nomes de host em seu sistema:

$ getent hosts skinner
192.168.1.3     skinner.dom.net
    
por 18.11.2014 / 01:03
-1

Geralmente, para o software Unix em geral, as configurações específicas do usuário (nesse caso, ~/.ssh/config ) substituem as configurações de todo o sistema (nesse caso, /etc/hosts ); assim, as configurações em ~/.ssh/config teriam maior prioridade.

    
por 18.11.2014 / 00:10