Eu tenho um servidor RHEL 8.3 e este é o conteúdo na /etc/ssh
pasta:
[root@192 ssh]# pwd
/etc/ssh
[root@192 ssh]# tree -a
.
├── moduli
├── ssh_config
├── ssh_config.d
│ └── 05-redhat.conf
├── sshd_config
├── ssh_host_ecdsa_key
├── ssh_host_ecdsa_key.pub
├── ssh_host_ed25519_key
├── ssh_host_ed25519_key.pub
├── ssh_host_rsa_key
└── ssh_host_rsa_key.pub
1 directory, 10 files
[root@192 ssh]#
Descobri que quando eu ssh para este servidor do server1, a chave pública RSA (ssh_host_rsa_key.pub) foi adicionada no ~/.ssh/known_hosts
arquivo do servidor 1. Mas quando tento outro servidor server2, a chave pública ECDSA (ssh_host_ecdsa_key.pub) foi adicionada ao ~/.ssh/known_hosts
. Por que a diferença? O que determina qual chave pública será usada?
No protocolo SSH, os algoritmos usados para a cifra, MAC, troca de chave, chave de host e chave pública podem ser negociados independentemente. Na maioria dos casos, o algoritmo selecionado é o primeiro dos algoritmos do cliente que o servidor também suporta.
Normalmente, um servidor possui várias chaves de host e a escolha da chave de host usada depende do algoritmo negociado. As versões mais recentes do OpenSSH preferem as chaves Ed25519 e, antes disso, as chaves ECDSA preferidas. No entanto, o OpenSSH tem uma regra especial que, se nenhuma configuração especial da chave de host for usada e pelo menos uma chave de host for conhecida no arquivo de hosts conhecidos, ele reescreverá os algoritmos de cliente preferidos para preferir as chaves de host que ele conhece. Isso significa que os usuários não verão avisos de chave de host se o servidor adicionar uma nova chave de host.
Como mencionado, normalmente as chaves Ed25519 e ECDSA são as preferidas. No entanto, o OpenSSH recentemente abandonou o suporte para usar automaticamente RSA com SHA-1 (o
ssh-rsa
algoritmo de assinatura, que é inseguro), enquanto ainda suporta RSA com SHA-2 (rsa-sha2-256
ersa-sha2-512
). Às vezes, as pessoas optam por reativar ossh-rsa
algoritmo na configuração, apesar dos riscos de segurança conhecidos, e o padrão típico que as pessoas usam para isso coloca o algoritmo na frente da lista. Portanto, é possível que nesse sistema tal configuração tenha sido habilitada em~/.ssh/config
ou/etc/ssh/ssh_config
, levando à preferência pela chave RSA.Você pode escolher as cifras em
sshd_config
. Em um servidor ocupado ou antigo, um administrador pode oferecer um pacote de criptografia com menos uso de CPU. Algo semelhante acontece com os sites e a negociação para garantir uma conexão com cada navegador de cliente individual em que o servidor e o cliente devem eventualmente concordar com uma tecnologia que ambos suportam. Então o usuário tem alguma influência também (ssh_config
).Em um servidor está
/etc/ssh/sshd_config
se você quiser dar uma olhada.Você pode sondar um servidor com ssh-keyscan . Veja aqui: https://serverfault.com/questions/934072/how-to-view-ecdsa-host-key-of-a-server