A versão do OpenSSH que vem com o CentOS 5 não suporta números de porta em known_hosts
. Você precisará criar e instalar uma versão mais recente se quiser que isso funcione.
Eu tenho duas máquinas atrás de um firewall, com as portas ssh encaminhadas para 2201 e 2202.
Quando eu
ssh host -p 2201
ele pergunta se eu confio na máquina, digo sim, ela é adicionada em ~ / .ssh / known_hosts
Então eu
ssh host -p 2202
Não me deixa, porque já existe uma entrada para este IP em ~/.ssh/known_host:1
(o arquivo estava vazio quando eu comecei, então a linha 1 é aquela adicionada pela execução ssh anterior).
Isso acontece no CentOS 5.4.
Em outras distros (eu tentei o Arch), parece que o ssh combina o known_hosts com as portas também, então eu posso ter várias impressões digitais para várias portas no mesmo host / ip sem nenhum problema.
Como posso obter esse mesmo comportamento para o CentOS?
Não encontrei nada em man ssh_config
(ou pelo menos não sem desativar a verificação de impressões digitais).
Eu encontrei uma solução temporária. Se o arquivo known_hosts
tiver mais de uma entrada para o mesmo IP, ele verificará todos eles antes de concluir que algo está errado. Mas eu realmente odiaria que isso fosse a solução.
~/.ssh/config
:
Host foohost-2201 Hostname foohost.domain.tld # This should comply with the format used in OpenSSH 5. HostkeyAlias "[foohost.domain.tld]:2201" User username Port 2201
E sério, atualize.
Use isto se o seu cliente openssh não suportar entradas baseadas em host + porta:
A diretiva 'GlobalKnownHostsFile' pode ser usada incorretamente para apontar para um arquivo diferente para cada uma das suas duas máquinas com firewall (aqui Alice e Bob). No entanto, esses dois arquivos devem ser preparados com chaves de host corretas de alice ou bob antecipadamente, pois eles não são gravados quando aceitam chaves desconhecidas.
Não é muito divertido de configurar, mas depois de concluído, funciona.
Minha solução anterior antes disso era 'StrictHostKeyChecking no', que não permitia que o ssh-agent enviasse chaves nem enviasse as portas (bloqueadas pelo openssh quando usadas).
Meu arquivo .ssh / config ficou assim até recentemente:
Host hoppingstation
Hostname loginhost.somewhere.net
User me
LocalForward 2201 alice.somewhere.net:22
LocalForward 2202 bob.somewhere.net:22
Host alice
Hostname localhost
Port 2201
User root
ForwardAgent yes
GlobalKnownHostsFile /home/me/.ssh/known_hosts_alice
Host bob
Hostname localhost
Port 2202
User root
ForwardAgent yes
GlobalKnownHostsFile /home/me/.ssh/known_hosts_bob
minha solução; adicionar informações detalhadas do host a ~/.ssh/config
:
Host <someidentifier>
Hostname ip.add.re.ss
StrictHostKeyChecking no
User username
Port 2201
Host <someotheridentifier>
Hostname ip.add.re.ss
StrictHostKeyChecking no
User username
Port 2202
então você pode fazer ssh someidentifier
sem precisar fornecer -p
etc.
Tags ssh known-hosts