Em geral, estou procurando um método para mostrar informações sobre uma chave SSH privada ou pública sem entrar em contato com um servidor, como comprimento de chave, algoritmo, versão ssh e assim por diante. Gosto especialmente de saber se alguma chave é sha1 ou sha2.
relate perguntas
-
O OpenVPN pode conectar, o tráfego funciona, mas não estou na rede local
-
Como acessar remotamente o console do EC2 usando GUI
-
Exigir autenticação LDAP *e* autenticação ssh
-
Carregar chave “ec256.pem”: formato inválido é lançado ao tentar gerar chave pública a partir de chave privada
-
Por que chown 600 id_rsa corrige problemas de permissões?
Para chaves públicas de "uma linha" no formato OpenSSH:
ssh-rsa
, ) seguido por dados codificados em Base64, é uma chave pública SSHv2 do algoritmo especificado. Usessh-keygen -l -f <file>
para mostrar o tamanho de bits e a impressão digital da chave.Para chaves privadas no formato PEM (OpenSSL):
ssh-keygen -l -f <file>
ouopenssl pkey -in <file> -noout -text
para determinar seu algoritmo e tamanho de bit.Para chaves privadas "BEGIN OPENSSH PRIVATE KEY" no formato OpenSSH:
ssh-keygen -l -f <file>
para mostrar seu tamanho e algoritmo.A pergunta "SHA1 ou SHA2" não se aplica exatamente às velhas chaves SSH simples da mesma forma que se aplica aos certificados X.509. Ao contrário dos certificados X.509, em que o algoritmo de hash é relevante porque é especificado durante a assinatura da CA, as chaves SSH simples não contêm nenhum resumo ou assinatura. (A única exceção são os "certificados" do OpenSSH, que são raros.)
Dito isso, o tipo de chave exige um algoritmo de hash específico durante a autenticação (quando o cliente ou servidor assina um desafio único). Quando vários algoritmos são possíveis (como no caso de chaves RSA), eles são escolhidos durante cada autenticação e não são inseridos na própria chave.
ssh-rsa
as chaves são usadas junto com SHA1 por padrão, conforme especificado na seção 6.6 do RFC4253 . No entanto, clientes e servidores modernos também oferecem suporte aos mecanismos de assinatura "rsa-sha2-256" e "rsa-sha2-512" baseados em SHA2, que foram adicionados posteriormente no RFC8332 .Você pode usar as opções PubkeyAcceptedKeyTypes ou HostKeyAlgorithms do OpenSSH para impor o uso de SHA2. (Observe que o tipo de chave no arquivo permanece "ssh-rsa", apenas o handshake muda.)
ssh-dss
chaves são usadas junto com SHA1, conforme especificado em RFC4253 e FIPS-186-2. Não há atualização; em vez disso, todo o formato da chave é considerado obsoleto (pelo menos pelo OpenSSH).ecdsa-sha2-nistp###
as chaves são usadas junto com algoritmos baseados em SHA2, conforme especificado na seção 6.2.1 do RFC5656 .ssh-ed25519
essh-ed448
as chaves são usadas junto com SHAKE256 (~SHA3) conforme especificado na seção 5.2.6 do RFC8032 e draft-ietf-curdle-ssh-ed25519-ed448-08 seção 5 .Finalmente, há o caso raro de "certificados SSH" proprietários do OpenSSH. Sempre que uma autoridade de certificação OpenSSH assina uma chave e a transforma em um certificado, as mesmas regras de algoritmo listadas acima são usadas.
IIRC, você deve ser capaz de usar
ssh-keygen -L -f <file>
para ver o conteúdo de um certificado, incluindo o algoritmo de hash usado durante a assinatura.