[encryption] 공개 / 개인 DSA 키 쌍을 어떻게 테스트합니까?

주어진 개인 키가 주어진 공개 키와 일치하는지 쉽게 확인할 수 있습니까? * .pub과 * .key 파일이 몇 개 있는데 어느 것이 어떤 것인지 확인해야합니다.

다시, 이것들은 펍 / 키 파일, DSA입니다.

나는 정말로 일종의 라이너를 선호합니다 …



답변

나는 나를 위해 더 잘 작동하는 것처럼 보였다.

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

이 명령은 주어진 개인 키에 대한 공개 키를 출력하므로 출력을 각 * .pub 파일과 비교하십시오.


답변

나는 항상 다음 명령을 사용하여 모듈러스의 MD5 해시를 비교합니다.

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

해시가 일치하면 두 파일이 함께 이동합니다.


답변

DSA 키의 경우

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

공개 키를 인쇄 한 다음

 openssl dsa -in dsa.key -modulus -noout

개인 키에 해당하는 공개 키를 표시 한 다음 비교하십시오.


답변

x.509 인증서 내에 공개 키가 있다고 가정하고 RSA 키라고 가정하면 각 공개 키에 대해

    openssl x509 -in certfile -modulus -noout

각 개인 키에 대해

    openssl rsa -in keyfile -modulus -noout

그런 다음 모듈러스로 키를 일치시킵니다.


답변

diff를 사용하면 쉽게 확인할 수 있습니다.

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

유일한 이상한 점은 파일이 동일하면 diff가 아무 것도 말하지 않으므로 공개 및 개인 일치 하지 않는 경우에만 알려 줍니다.


답변

공개 키를 삭제하고 개인 키에서 새 키를 생성하십시오. 별도의 디렉토리에 보관하거나 이름 지정 규칙을 사용하여 그대로 유지하십시오.


답변

다음 명령을 입력하여 개인 키와 공개 키가 $ USER / .ssh 디렉토리에서 일치하는 세트 (동일)인지 또는 일치하는 세트 (차이)인지 확인하십시오. cut 명령은 공개 키의 행 끝에있는 주석이 비교되는 것을 방지하여 키만 비교할 수 있도록합니다.

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

출력은이 라인 중 하나와 같습니다.

Files - and /dev/fd/63 are identical

Files - and /dev/fd/63 differ

사용자가 ~ / .ssh / files 및 일치하는 키 세트의 파일 권한을 확인하는 데 사용하는 쉘 스크립트를 작성했습니다. ssh를 설정하는 사용자 사건으로 인한 문제를 해결합니다. 도움이 될 수 있습니다. https://github.com/BradleyA/docker-security-infrastructure/tree/master/ssh

참고 : 이전 답변 (2018 년 3 월)은 더 이상 최신 버전의 openssh에서 작동하지 않습니다. 이전 답변 : diff -qs <(ssh-keygen -yf ~ / .ssh / id_rsa) <(cut -d ”-f 1,2 ~ / .ssh / id_rsa.pub)