
E se um host for definido /etc/hosts
como:
192.168.0.100 server
e um é definido ~/.ssh/config
como:
Host server
HostName 192.168.0.101
e você faz ssh no servidor: ssh server
.
Como tal conflito seria resolvido? Acho que um tem maior prioridade que o outro.
Responder1
Se você fizer isso, ssh server
a parte do servidor poderá ser um nome de host real ou algum "apelido" interno do ssh. O ssh primeiro procura algum apelido em .ssh/config, se encontrar uma configuração lá ele usará isso. Se não encontrar uma configuração, ele assume um nome de host real e tenta resolvê-lo via /etc/host e DNS.
Responder2
O arquivo ~/.ssh/config
não tem nada a ver com /etc/hosts
. Em vez disso, é um arquivo de configuração para ssh
usar, se existir.
Você pode ver que isso ssh
se refere a esse arquivo antes de fazer qualquer outra coisa usando a opção detalhada, -v
, para ssh
.
Entrada de host em ~/.ssh/config
Aqui tenho uma entrada em meu ~/.ssh/config
arquivo para um servidor chamado "skinner". Estou habilitando o nível de depuração 3 incluindo 3 -v
opções.
$ 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 perceber 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 nenhuma entrada correspondente no ~/.ssh/config
arquivo, ssh
consultaremos a resolução DNS do sistema para descobrir como se conectar a um nome de host que foi especificado.
$ 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
Responder3
Geralmente, para software Unix em geral, as configurações específicas do usuário (neste caso, ~/.ssh/config
) substituiriam as configurações de todo o sistema (neste caso, /etc/hosts
); portanto, as configurações ~/.ssh/config
teriam maior prioridade.