ssh-keygen -y -e -f <private key>pega uma chave privada e imprime a chave pública correspondente que pode ser comparada diretamente com suas chaves públicas disponíveis. (Dica: cuidado com comentários ou opções-chave.)
(Como diabos está fazendo isso? Só posso esperar que a chave pública seja codificada direta ou indiretamente na chave privada...)
Eu mesmo precisava disso e usei a seguinte frase do Bash. Não deve produzir nada se as chaves estiverem juntas. Aplique um pouco -qao diff em scripts e diff apenas define o código de retorno adequadamente.
Dependendo de onde você obtém o arquivo de chave pública que está testando, a resposta aceita pode fornecer resultados falsos positivos. Isso se deve ao comportamento descrito no comentário de @drewbenn. Especificamente, quando a opção -e é usada com o arquivo de chave privada como o parâmetro de opção -f, ela simplesmente repete (mas reformata) o que está no arquivo de chave pública associado.
Em outras palavras,
ssh-keygen -y -f id_rsa
(aparentemente) gera o valor da chave pública e
ssh-keygen -y -e -f id_rsa
simplesmente e gera (e reformata) a chave no id_rsa.pub existente , seja ele qual for .
No meu caso, tenho que verificar se o par não foi corrompido. Então, decidi comparar o seguinte:
O mais fácil é comparar as impressões digitais, pois as chaves pública e privada são iguais. A comparação visual é bem fácil colocando os dois comandos na mesma linha:
Se eles estiverem em seu sistema local, fique id_rsa.pubno seu $HOME/.ssh/authorized_keyse use a sshchave . Se funcionar, então eles combinam.localhostid_rsa
Eu preferiria o
ssh-keygen -y -e -f <private key>
caminho em vez da resposta aceita de Como você testa um par de chaves DSA público/privado? no estouro de pilha.ssh-keygen -y -e -f <private key>
pega uma chave privada e imprime a chave pública correspondente que pode ser comparada diretamente com suas chaves públicas disponíveis. (Dica: cuidado com comentários ou opções-chave.)(Como diabos está fazendo isso? Só posso esperar que a chave pública seja codificada direta ou indiretamente na chave privada...)
Eu mesmo precisava disso e usei a seguinte frase do Bash. Não deve produzir nada se as chaves estiverem juntas. Aplique um pouco
-q
ao diff em scripts e diff apenas define o código de retorno adequadamente.Dependendo de onde você obtém o arquivo de chave pública que está testando, a resposta aceita pode fornecer resultados falsos positivos. Isso se deve ao comportamento descrito no comentário de @drewbenn. Especificamente, quando a opção -e é usada com o arquivo de chave privada como o parâmetro de opção -f, ela simplesmente repete (mas reformata) o que está no arquivo de chave pública associado.
Em outras palavras,
(aparentemente) gera o valor da chave pública e
simplesmente e gera (e reformata) a chave no id_rsa.pub existente , seja ele qual for .
No meu caso, tenho que verificar se o par não foi corrompido. Então, decidi comparar o seguinte:
com
Portanto:
Talvez isso não seja tão flexível, mas é melhor para minhas necessidades. Talvez ajude outra pessoa.
O mais fácil é comparar as impressões digitais, pois as chaves pública e privada são iguais. A comparação visual é bem fácil colocando os dois comandos na mesma linha:
Programaticamente, você desejará ignorar a parte do comentário para
Se eles estiverem em seu sistema local, fique
id_rsa.pub
no seu$HOME/.ssh/authorized_keys
e use assh
chave . Se funcionar, então eles combinam.localhost
id_rsa