ssh-keyscan não tem saída

5

Eu tenho um script de servidor que automaticamente desce e instala um repositório do github. Como parte do script, estou executando ssh-keyscan -H github.com >> ~/.ssh/known_hosts como o usuário git para aceitar automaticamente a chave RSA do github antes de verificar o repo.

Eu usei com sucesso este mesmo script em uma instância local do vagrant, bem como em vários servidores. No entanto, em um dos servidores isso não funciona, porque ssh-keyscan -H github.com não retorna nenhuma saída (tentei isso como o usuário git, meu usuário pessoal e como root, e o comando age da mesma forma). Eu posso pingar github.com, então não é um problema de conexão; Eu também posso executar ssh-keyscan com sucesso em outro servidor na mesma rede. Eu tentei atualizar o SSH para ver se esse poderia ser o problema, mas ele já está na versão mais recente da minha distribuição (CentOS 7).

Onde seria um bom lugar para começar a solucionar isso? Eu tentei pesquisar o StackExchange para problemas relacionados a 'ssh-keyscan', mas ainda não encontrei nada que se encaixa nesse problema em particular.

    
por Jay 20.02.2017 / 20:02

2 respostas

3

Isso soa como um problema de rede para mim.

A primeira coisa que eu faria é tentar telnetting para vários servidores SSH na porta 22, algo como o seguinte:

$ telnet local-git-server 22

seguido por:

$ telnet github.com 22

Quando você executa isso, deve ver uma saída semelhante à seguinte:

Escape character is '^]'. SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2

Esta é uma boa indicação de que ssh é permitido sem restrições de firewall.

  • Qual foi o resultado final de ssh-keyscan ?
  • O que imprimiu, se foi algo?
  • O telnet fica travado por vários segundos? Você recebe uma conexão recusada ou uma conexão rejeitada?
  • Se você executar netstat -an --tcp , verá várias entradas TCP no estado SYN_SENT? Nesse caso, isso indicaria que há algo bloqueando na camada de rede
por 20.02.2017 / 20:12
2

Eu tive o mesmo problema (nenhuma saída foi dada) e foi porque o tempo limite padrão (5 segundos) era muito curto. Eu resolvi isso usando o sinalizador -T que me permite definir meu próprio tempo limite personalizado (em segundos). Exemplo ilustrativo com tempo limite de 240 segundos e endereço IP aleatório:

ssh-keyscan -T 240 52.213.86.118
    
por 11.05.2018 / 18:09

Tags