O servidor SSH (SFTP) pode ter várias impressões digitais?

O servidor SSH (SFTP) pode ter várias impressões digitais?

Estou criando um cliente SFTP automatizado com Java e, é claro, preciso salvar a impressão digital SSH do servidor para cada servidor, mas é possível que o servidor tenha duas ou mais impressões digitais exclusivas?

É possível que existam serviços SFTP com balanceamento de carga que tenham vários servidores SSH por trás do balanceador de carga e cada um deles tenha uma impressão digital exclusiva? Ou é de alguma forma forçado que todos usem a mesma impressão digital?

Responder1

Sim e não.

É possível que um único servidor tenha múltiplas chaves de host para algoritmos alternativos (na verdademaioriaservidores suportam, por exemplo, RSA + EdDSA), mas apenas uma única chave de host é escolhida para cada conexão, e para clientes deve ser suficiente lembrar apenas uma.

No caso de serviços com balanceamento de carga, não existe nenhum mecanismo mágico queforçatodos os nós compartilhem a mesma chave. Mas, na prática, é muito provável que o administrador do sistema apenas copie o mesmo par de chaves em todos os nós, para facilitar a conexão dos usuários.


Em mais detalhes:

  • Em primeiro lugar, mesmo umsolteiroo servidor sempre pode ter várias chaves de host com algoritmos diferentes – por exemplo: uma chave ssh-rsa, uma chave ssh-ed25519 e uma chave ecdsa-nistp256.

    O handshake exige que o cliente escolha uma chave e geralmente é apenas a impressão digital dessa chave que é lembrada. No entanto, alguns clientes – por exemplo, PuTTY – permitem recodificar a conexão com todas as chaves de host disponíveis, para suportar a migração de algoritmos.

    Por exemplo, você se conecta usando a chave ssh-rsa do servidor, mas também se lembra da impressão digital ssh-ed25519. Posteriormente, se o servidor desabilitar o suporte a ssh-rsa, agora você poderá usar ssh-ed25519 sem avisar novamente o usuário.

  • Ao conectar-se a serviços com balanceamento de carga, alguns clientes permitirão múltiplas chaves de host conhecidasmesmo do mesmo tiposer aprovado manualmente.

    Por exemplo, se o mesmo nome de host for compartilhado por vários nós, o cliente OpenSSH permitirá adicionar manualmente todas as suas chaves públicas a ~/.ssh/known_hosts e aceitará qualquer entrada correspondente.

    No entanto, o OpenSSH não fará issoautomaticamente– uma vez conhecida a primeira chave, tratará qualquer alteração como um erro fatal. Então, na prática, eu presumiria que os administradores de sistemas realmente tentam evitar uma experiência ruim do usuário e apenas clonam a mesma chave de host para todos os nós com balanceamento de carga.

Resumo dos clientes existentes:

  • O PuTTY pode rastrear várias chaves por servidor, mas apenas uma para cada algoritmo. Em outras palavras, requer que a combinação [nome do host, porta, algoritmo] seja exclusiva.
  • OpenSSH pode rastrear múltiplas chaves por servidor, sem quaisquer requisitos de exclusividade.
  • <Outros clientes?>

informação relacionada