Falha se a chave do host remoto SSH for desconhecida

Falha se a chave do host remoto SSH for desconhecida

Estou usando uma ferramenta que depende de ssh para conectar-me a um host remoto. Infelizmente, esta ferramenta não aceita entradas do usuário e quando a chave do host remoto é desconhecida, a chamada é interrompida para sempre. Existe uma opção ou um conjunto de opções que fazem com que a invocação do ssh falhe quando a chave do host remoto é desconhecida?

Responder1

Use -o StrictHostKeyChecking=yespara sshinvocação:

Se este sinalizador estiver definido como sim, o ssh(1) nunca adicionará automaticamente chaves de host ao arquivo ~/.ssh/known_hosts e se recusará a se conectar a hosts cuja chave de host foi alterada.

O padrão é aske é por isso que você tem um problema:

Se este sinalizador estiver configurado para perguntar (o padrão), novas chaves de host serão adicionadas aos arquivos de host conhecidos do usuário somente depois que o usuário confirmar que é isso que ele realmente deseja fazer, e o ssh se recusará a se conectar aos hosts cuja chave de host mudou.

Responder2

Como solução alternativa, você pode verificar se o host é confiável:

$ ssh-keygen -H -F host.example.com
# Host host.example.com found: line 205 type RSA
...

Observe que ssh-keygen termina com 0 em qualquer caso aqui, então você deve verificar a saída:

ssh-keygen -H -F host.example.com |
   grep -q found: || echo "host is not trusted" && exit 2

Responder3

Você pode usar -oBatchMode=yespara falhar onde a interação do usuário seria necessária (por exemplo, solicitando uma senha, verificando a chave do host remoto, etc.)

Responder4

Você pode adicionar opções padrão em ~/.ssh/config como:

Host *
    StrictHostKeyChecking no

Isso desativa o ssh reclamando de chaves de host desconhecidas ou alteradas.

Você pode limitar essas opções a um conjunto de hosts fornecendo um padrão de host apropriado.

informação relacionada