Pergunta

Existe uma maneira fácil de verificar se uma determinada chave privada corresponde a um determinado chave pública? Eu tenho alguns * pub, e alguns arquivos .key *, e eu preciso verificar que ir com o que.

Novamente, estes são pub / arquivos de chave, DSA.

Eu realmente prefiro uma frase de algum tipo ...

Foi útil?

Solução

Eu encontrei uma maneira que parece funcionar melhor para mim:

ssh-keygen -y -f <private key file>

que a saída do comando vontade a chave pública para a chave privada dada, então, em seguida, basta comparar a saída para cada arquivo pub *.

Outras dicas

Eu sempre comparar um hash MD5 do módulo usando estes comandos:

Certificate: openssl x509 -noout -modulus -in server.crt | openssl md5
Private Key: openssl rsa -noout -modulus -in server.key | openssl md5
CSR: openssl req -noout -modulus -in server.csr | openssl md5

Se os hashes corresponderem, em seguida, os dois arquivos juntos.

Para chaves DSA, use

 openssl dsa -pubin -in dsa.pub -modulus -noout

para imprimir as chaves públicas, então

 openssl dsa -in dsa.key -modulus -noout

para exibir as chaves públicas correspondentes a uma chave privada, em seguida, compará-los.

Supondo que você tenha as chaves públicas dentro X.509 certificados, e assumindo que eles são chaves RSA, em seguida, para cada chave pública, faça

    openssl x509 -in certfile -modulus -noout

Para cada chave privada, faça

    openssl rsa -in keyfile -modulus -noout

Em seguida, combinar as chaves por módulo.

A verificação pode ser feita mais fácil com diff:

diff <(ssh-keygen -y -f <private_key_file>) <public key file>

A única coisa estranha é que diff não diz nada se os arquivos são os mesmos, assim você só vai ser dito se o público e privado não jogo.

Excluir as chaves públicas e gerar novos das chaves privadas. Mantê-los em diretórios separados, ou usar uma convenção de nomenclatura para mantê-los em linha reta.

Se você estiver em Windows e quer usar uma GUI, com puttygen você pode importar sua chave privada para ele:

enter descrição da imagem aqui

Uma vez importado, você pode salvar a sua chave pública e compará-lo ao seu.

Digite o seguinte comando para verificar se uma chave privada e uma chave pública são um conjunto combinado (idêntico) ou não um conjunto combinado (diferem) em $ USUÁRIO diretório / .ssh. O comando corte evita que o comentário no final da linha na chave pública de serem comparados, permitindo apenas a chave para ser comparado.

ssh-keygen -y -f ~/.ssh/id_rsa | diff -s - <(cut -d ' ' -f 1,2 ~/.ssh/id_rsa.pub)

saída será semelhante a qualquer uma destas linhas.

Files - and /dev/fd/63 are identical

Files - and /dev/fd/63 differ

Eu escrevi um script shell que os usuários usam para verificar permissão de arquivo de seus ~ / .ssh / arquivos e combinados conjunto de chaves. Ele resolve os meus desafios com incidentes Utilizador Configurar ssh. Pode ajudá-lo. https://github.com/BradleyA/docker-security-infrastructure/ árvore / master / ssh

Nota: A minha resposta anterior (março 2018) já não funciona com as versões mais recentes do OpenSSH. resposta Anterior: dif -qs <(ssh-keygen -yf ~ / .ssh / id_rsa) <(corte -d '' -f 1,2 ~ / .ssh / id_rsa.pub)

Criptografar algo com a chave pública, e ver qual chave privada decifra-lo.

Este artigo projeto de código por ninguém menos que implementos Jeff Atwood uma simplificado invólucro em torno das classes .NET cripto. Supondo que essas chaves foram criadas para uso com RSA, use a classe assimétrica com sua chave pública para criptografar e o mesmo com a sua chave privada para descriptografar.

Se ele retornar nada, então eles combinam:

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost

Basta usar puttygen e carregar a sua chave privada em isto. Oferece diferentes opções, por exemplo, exportar a chave pública coressponding.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top