RSA 공개 / 개인 키 쌍이 일치하는지 확인하는 방법


71

나는 두 개의 파일을 가지고 id_rsaid_rsa.pub. 유효한 쌍 인지 확인하기 위해 어떤 명령을 사용할 수 있습니까?


Michuelnik의 답변을 확인하겠습니다. 덕분에 새로운 키 페어를 만들 필요가 없었습니다. ssh -v많은 도움이됩니다.
Chris K

답변:


91

공개 / 개인 DSA 키 쌍ssh-keygen -y -e -f <private key>어떻게 테스트합니까?에 대한 정답 대신에 방법 을 선호합니다 . 스택 오버플로.

ssh-keygen -y -e -f <private key>개인 키를 가져 와서 사용 가능한 공개 키와 직접 비교할 수있는 해당 공개 키를 인쇄합니다. (힌트 : 주석 또는 키 옵션에주의하십시오.)

(어떻게 지내고 있습니까? 공개 키가 개인 키로 직접 또는 간접적으로 인코딩되기를 바랍니다.)

나는 이것을 직접 필요로했고 다음 Bash one-liner를 사용했다. 키가 함께 있으면 아무 것도 출력하지 않아야합니다. -q스크립트의 diff에 약간 을 적용 하면 diff는 리턴 코드 만 적절하게 설정합니다.

PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )

1
@MichaelHampton : 이제 귀하의 의견을 이해합니다. "허용 된 답변" 은이 질문 아닌 stackoverflow에 관한 질문을 참조해야합니다 ...
Michuelnik

1
@Sirch : 두 키가 동일하기 때문에 어떤 키가 개인 키이고 어떤 키가 공개인지 결정하는 것은 무작위입니다. 하나의 키가 암호화하는 것은 다른 키로 만 해독 할 수 있습니다. 그리고 하나의 키를 다른 키에서 얻을 수 있다면이 모든 것이 잘되지 않을 것입니다.
Michuelnik

1
@Michuelnik 개인 키에서 공개 키를 파생시킬 수 있습니다. 공개 키에서 개인 키를 파생시킬 수 없습니다. 암호화하는 자료에 대해서는 이야기하지 않았습니다.
Sirch

1
@Michuelnik imho, 질문은 SO 및 주제 (및 / 또는 수퍼 유저)와 관련이 없습니다. imho, 중복으로 표시되어서는 안되며 마이그레이션을 위해 플래그를 지정해야합니다. 그러나 두 가지 모두에 대해 다루므로 더 완벽한 정보 공유를 좋아합니다.
Chris K

10
id_rsa.pub가 존재하는 한 ssh-keygen -y -e -f id_rsaid_rsa를 전혀 검사하지 않고 id_rsa.pub에서 값을 반환합니다. 예를 들어 echo 5 > id_rsa개인 키를 지우고 diff를 수행하면 diff가 통과합니다! 또한 ssh-keygen -yef foofoo가 유효한 키가 아니며 해당 foo.pub가없는 곳 에서 실행 하면 사용자 입력 대기를 차단하므로 스크립트에서이 키를 사용하는 데주의하십시오.

31

테스트중인 공개 키 파일의 위치에 따라 승인 된 답변이 오 탐지 결과를 제공 할 수 있습니다. 이것은 @drewbenn의 주석에 설명 된 동작 때문입니다. 특히, -e 옵션을 개인 키 파일과 함께 -f 옵션 매개 변수로 사용하면 연관된 공개 키 파일에있는 내용을 단순히 앵무새 (포맷)합니다.

다시 말해,

ssh-keygen -y -f id_rsa

(분명히) 생성 공개 키 값을하고,

ssh-keygen -y -e -f id_rsa

단순히 기존 id_rsa.pub 의 키를 출력하고 재 포맷 합니다 .

내 경우에는 쌍이 손상되지 않았는지 확인해야합니다. 그래서 나는 다음을 비교하기로 결정했습니다.

ssh-keygen -y -f id_rsa | cut -d' ' -f 2

cut -d' ' -f 2 id_rsa.pub

따라서:

diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)

아마도 이것은 유연하지는 않지만 내 요구에 더 좋습니다. 다른 사람을 도울 수도 있습니다.


5
이것은 실제로 받아 들인 대답을 대체하거나 최소한 공감면에서 그것을 능가해야합니다.
thomanski 2016 년

감사합니다! 이 명령은 암호문이있는 키에서는 작동하지 않으며 대화식으로 묻지 않습니다. 두 개의 () 명령 내용을 파일로 추출하여 차이점을 발견했습니다.
Yaroslav Nikitenko

5

그들은 당신의 로컬 시스템에 있다면, 스틱 id_rsa.pub당신에 $HOME/.ssh/authorized_keyssshlocalhost사용하여 id_rsa키를. 작동하면 일치합니다.

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.