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


167

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

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

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

답변:


259

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

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

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


2
이것이 정확히 무엇입니까? 왜 ssh?
sammiwei 2012

2
아마도 그는 ssh 인증을 위해 키 쌍을 사용하고 있기 때문일 것입니다.
etarion

2
제 경우에는 중앙 작업 서버에 수십 개의 id_rsa.pub.blahhost파일이 있으며 어느 것이 하나의 id_rsa개인 키와 일치하는지 알 수 없으며 암호가없는 scp를 설정하여 오래된 웹 사이트에서 마이그레이션 할 수 있습니다. 새로운 키 페어를 만드는 것은 옵션이 아닙니다. 내 키가 제대로 설정되어 있고 엉망이되지 않습니다.
Chris K

1
이 솔루션은 모든 유형의 SSH 키에서 작동하는 것 같습니다. 이 방법으로 잘못 배치 된 공개 키를 복구 할 수도있었습니다.
Jari Turkia

53

나는 항상 다음 명령을 사용하여 모듈러스의 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

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


48

DSA 키의 경우

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

공개 키를 인쇄 한 다음

 openssl dsa -in dsa.key -modulus -noout

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


18

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

    openssl x509 -in certfile -modulus -noout

각 개인 키에 대해

    openssl rsa -in keyfile -modulus -noout

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


17

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

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

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


3
파일이 일치 할 때 출력을 얻으려면 :diff -s
Roland

3
이것은 훌륭한 답변입니다. (1) diff -qs간단한 "동일 / 동일하지 않은 대답을 반환합니다. (2) diff를 실행하기 전에 공개 키 파일에서 주석을 삭제해야합니다.
emory

7

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


3
문제는 확인 방법을 묻고 있으며 확인하려는 장치에 새로운 장치를 생성 할 수있는 기능이 없을 수 있습니다.
ArmenB

5

다음 명령을 입력하여 개인 키와 공개 키가 $ 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)


좀 더 정교하게 작성해야한다고 생각합니다. 게시물이 실제로 stackoverflow.com/a/22595408/3102264
mpromonet


4

Windows에 있고 GUI를 사용하려면 puttygen 과 함께 개인 키를 가져올 수 있습니다.

여기에 이미지 설명을 입력하십시오

일단 가져온 후에는 공개 키를 저장하여 자신의 키와 비교할 수 있습니다.


1

공개 키로 무언가를 암호화하고 해독하는 개인 키를 확인하십시오.

Jeff Atwood 이외의 다른 사람이 작성한 이 코드 프로젝트 기사 는 .NET crypto 클래스 주위에 간단한 래퍼를 구현합니다. 이러한 키가 RSA와 함께 사용하기 위해 작성되었다고 가정하면 비대칭 클래스를 공개 키와 함께 사용하여 암호화하고 개인 키와 동일하게 암호를 해독하십시오.


좀 더 간단한 것을 찾고 있습니다. 쉘 하나의 라이너 등을 말한다. 나는 리눅스에 있고 openssl과 같은 일반적인 것들을 설치했다.
Loki

3
authorized_keys 파일에 공개 키를 추가하고 ssh를 사용하여 어떤 개인 키가 작동하는지 확인하는 것만큼이나 유용합니다. 이 방법은 효과가 있지만 고통입니다.
Bradley Kreider 님

0

아무것도 반환하지 않으면 다음과 일치합니다.

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

-2

puttygen을 사용 하고 개인 키를 넣으십시오. 코어 응답 공개 키 내보내기와 같은 다양한 옵션을 제공합니다.


1
이것은 개인-공개 키 쌍을 테스트 할 수 없습니다
MatFiz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.