RSA 키 지문 계산


903

GitHub에 대한 SSH 키 감사를 수행해야하지만 RSA 키 지문을 어떻게 찾을 수 있는지 잘 모르겠습니다. 원래 Linux에서 SSH 키를 생성하는 가이드를 따랐습니다.

현재 RSA 키 지문을 찾으려면 어떤 명령을 입력해야합니까?


21
FWIW, github이 키의 지문을 볼 수있는 곳 이기 때문에이 게시물로 계속 돌아옵니다 . 해당 개인 키를 사용하고 있는지 확인하고 싶습니다. 어쩌면 않습니다 이 게시물은 그 github에 관련된 질문을하는 데 도움이 때문에 github의 태그를 보장?
hamx0r

4
@ hamx0r Gitlab도 그 지문을 사용하기 때문에이 포스트로 돌아 왔습니다 ...
Ray Foss

1
나는 그것을 사용하는 Travis 때문에 그것에 왔습니다. : D
Per Lundberg

4
"이 페이지로 계속 돌아 오는"Linux를 사용하는 모든 사람들에게 이것을 이것을 bashrc에 복사하십시오 : bashrc를 찾은 function fingerprint() { ssh-keygen -lf $1 -E md5 }후 다음과 같이 지문을 얻을 수 있습니다fingerprint ~/.ssh/key_file
Jeff Diederiks

1
@JeffDiederiks 함수를 시도하고 왜 작동하지 않는지 궁금한 사람들을 위해 Bash 함수 ;는 본문에 후행 이 필요 하므로 function fingerprint() { ssh-keygen -lf $1 -E md5; }대신 사용하십시오.
tjjfvi

답변:


1261

SSH 키의 SHA256 지문을 검색하려면 다음 명령을 실행하십시오 ( -l새 키를 작성하는 대신 "list", -f"filename"을 의미 함).

$ ssh-keygen -lf /path/to/ssh/key

예를 들어 내 컴퓨터에서 내가 실행 한 명령은 (RSA 공개 키 사용)입니다.

$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)

최신 버전의 ssh-keygen으로 GitHub (MD5) 지문 형식을 얻으려면 다음을 실행하십시오.

$ ssh-keygen -E md5 -lf <fileName>

보너스 정보 :

ssh-keygen -lf또한 작업 known_hostsauthorized_keys파일.

Linux / Unix / OS X 시스템에서 대부분의 공개 키를 찾으려면 다음을 실행하십시오.

$ find /etc/ssh /home/*/.ssh /Users/*/.ssh -name '*.pub' -o -name 'authorized_keys' -o -name 'known_hosts'

(다른 사용자의 홈 디렉토리 내부를 보려면 루트 또는 sudo 여야합니다.)

ssh-add -l매우 비슷하지만, 당신의 에이전트에 추가 키의 지문을 보여줍니다. (OS X 사용자는 키 체인을 통한 매직 비밀번호없는 SSH는 ssh-agent를 사용하는 것과 다릅니다.)


5
경로가 무엇인지 어떻게 알 수 있습니까?
pal4life 2016 년

4
귀하의 16 진수 지문은 32 자리이므로 MD5 지문이라고 생각합니다. 맞습니까? SHA1
culix를

8
비 우분투 시스템에서 관련 파일은 / etc / ssh에있을 수 있습니다. 예 : /etc/ssh/ssh_host_rsa_key.pub
Zorawar

12
공개 키 / 개인 키 쌍의 두 키에 대해 지문이 동일해야합니다. 그래서 지문.ssh/id_rsa 같아야합니다 .ssh/id_rsa.pub. 따라서 둘 중 하나를 사용할 수 있습니다 (그리고 나처럼 탭 완성을 좋아한다면 키 입력 횟수가 2 회 줄어 듭니다. 효율성!).
Parthian Shot

25
ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pub표준 sha256을 원하지 않는 경우 사용 출력을
user8162

675

최신 SSH 명령은 지문을 SHA256 키로 표시합니다.

예를 들면 다음과 같습니다.

ssh-keygen -lf ~/.ssh/id_dsa.pub 
1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA)

기존 지문과 비교해야하는 경우 MD5 지문 해싱 기능 을 사용하도록 지정해야 합니다.

ssh-keygen -E md5 -lf ~/.ssh/id_dsa.pub
2048 MD5:4d:5b:97:19:8c:fe:06:f0:29:e7:f5:96:77:cb:3c:71 (DSA)

도 가능: -E sha1

업데이트 ... 예 ... 예 ... 알아요 ... SSH 용 DSA 키를 더 이상 사용하지 말고 이전 RSA 키 또는 최신 이클립스 키를 대신 사용해야합니다.

위에서 사용한 명령을 계속 편집하는 '관리자'에게. IT 변경을 중지하십시오! 명령과 결과 출력이 일치하지 않습니다!


6
이 답변에서 언급 ssh했듯이을 사용하여 서버의 이전 MD5 지문을 표시하도록 말할 수 있습니다 . (방금 검색 한 결과이 답변으로 다른 사람들도 비슷한 경험을하게 될 것입니다.)ssh -o FingerprintHash=md5 example.org
Jonathan Y.

25
이 답변은 github.com이 보여주는 것과 키를 비교하려는 사람들에게 가장 유용합니다 (예 : 16 진 형식의 MD5)
hamx0r

2
퍼티가보고 할 내용과 비교할 때 매우 유용합니다.
pjcard

27

Ubuntu에서 키를 보려면 터미널에서 다음 명령을 입력하십시오.

ssh-add -l

다음과 같은 결과가 나타납니다. 2568 0j:20:4b:88:a7:9t:wd:19:f0:d4:4y:9g:27:cf:97:23yourName @ ubuntu (RSA)

그러나 다음과 같은 오류가 발생하면; Could not open a connection to your authentication agent.
그런 다음 ssh-agent가 실행되고 있지 않음을 의미합니다. 다음과 같이 시작 / 실행 할 수 있습니다 ssh-agent bash(댓글의 @Richard 덕분에)ssh-add -l


5
Ubuntu를 사용하지 않는 경우 불행히도 "인증 에이전트에 대한 연결을 열 수 없습니다."라는 메시지가 표시 될 수 있습니다.
rogerdpack

1
인증 에이전트가 실행중인 경우에만 작동합니다.
Rufflewind

인증 에이전트를 실행하려면 ssh-agent bash수명을 다하고 사용하십시오. 언제나처럼 인생에서; ssh-agent모든 시스템에서 일관된 구현으로 보장되는 것은 아닙니다.
Richard Kenneth Niescior

리눅스를위한 또 다른 팁; ssh-keygen-g3의 옵션 -F (덤프 지문)는 키의 지문을 표시합니다. $ ssh-keygen-g3 -F /path/to/keyfile.pub answers.ssh.com/questions/494/…
AnneTheAgile

18

키 쌍 (개인 및 공개 키)은 동일한 지문을 갖습니다. 따라서 어떤 개인 키가 어떤 공개 키에 속하는지 기억할 수없는 경우 지문을 비교하여 일치하는 항목을 찾으십시오.

Marvin Vinto가 가장 많이 투표 한 답변은 공개 SSH 키 파일 의 지문을 제공 합니다. 해당 개인 SSH 키 의 지문 도 쿼리 할 수 ​​있지만 아래 그림과 같이 더 긴 단계가 필요합니다.

  1. SSH 에이전트를로드하지 않은 경우로드하십시오. 가장 쉬운 방법은 호출하는 것입니다

    $ ssh-agent bash
    

    또는

    $ ssh-agent tcsh
    

    (또는 사용하는 다른 쉘).

  2. 테스트하려는 개인 키를로드하십시오.

    $ ssh-add /path/to/your-ssh-private-key
    

    키가 비밀번호로 보호 된 경우 비밀번호 문구를 입력하라는 메시지가 표시됩니다.

  3. 이제 다른 사람들이 말했듯이

    $ ssh-add -l
    1024 fd:bc:8a:81:58:8f:2c:78:86:a2:cf:02:40:7d:9d:3c you@yourhost (DSA)
    

    fd:bc:...당신이 따르는 지문입니다. 여러 개의 키가있는 경우 여러 줄이 인쇄되고 마지막 줄에는 마지막으로로드 된 키의 지문이 포함됩니다.

  4. 에이전트를 중지하려면 (즉, 위의 1 단계를 호출 한 경우) 간단히 쉘에`exit '를 입력하면 ssh 에이전트를로드하기 전에 쉘로 돌아갑니다.

나는 새로운 정보를 추가하지는 않지만이 답변이 모든 수준의 사용자에게 분명하기를 바랍니다.


제 단락 사실이며, ssh-add -l그리고 ssh-keygen -l소정의 키 쌍에 대해 동일한 지문을 반환한다. 또한 -l대문자가 아닌 소문자 여야 합니다.
Albertas Agejevas

그 이의를 제기하지 않는 ssh-add -lssh-keygen -l특정 키 쌍에 대해 동일한 지문을 반환합니다. 그러나 첫 번째 단락의 원래 진술에서 무엇이 잘못되었는지 이해하지 못합니다. 명확하게하기 위해 문장을 추가했습니다.
Wirawan Purwanto

1
에이전트를 시작한 다음 키를로드 한 다음 지문을 얻는 것이 아니라 ssh-keygen을 키로 지정하는 것이 더 간단합니다.
Albertas Agejevas

1
개인 키만있는 경우 반드시 실행할 필요는 없습니다 ssh-agent. PRIVKEY개인 키 파일 PUBKEY로 설정되었고 (초기 존재하지 않는) 공개 키 파일 로 설정 되었다고 가정 ssh-keygen -y -f "${PRIVKEY}" > "${PUBKEY}"합니다. SSH 공개 키를 재생성 한 다음 ssh-keygen -E md5 -l -v -f "${PUBKEY}"MD5 해시 ssh-keygen -l -v -f "${PUBKEY}"를 원하거나 SHA-256 해시를 원할 경우 (이제 SHA-256이 기본값입니다).
David Tonhofer 2016 년

12

키가 SSH 에이전트에있는 경우 가장 빠른 방법 :

$ ssh-add -L | ssh-keygen -E md5 -lf /dev/stdin

에이전트의 각 키는 다음과 같이 인쇄됩니다.

4096 MD5:8f:c9:dc:40:ec:9e:dc:65:74:f7:20:c1:29:d1:e8:5a /Users/cmcginty/.ssh/id_rsa (RSA)

3
내 키를 내 GitHub 계정의 키와 빠르게 일치시키는 방법이 필요했으며이 답변을 통해 도움이되었습니다.
evanjs

11

유스 케이스에 도움이 되었기 때문에 여기 에서 AWS 포럼의 컨텐츠를 재생성 했습니다. AWS로 가져온 키와 일치하는 키를 확인하고 싶습니다.

openssl pkey -in ~/.ssh/ec2/primary.pem -pubout -outform DER | openssl md5 -c

여기서 :- primary.pem확인할 개인 키


9
$ ssh-add -l 

Mac OS X v10.8 (Mountain Lion) -v10.10 (Yosemite) 에서도 작동합니다 .

또한 -EMD5가 필요한 경우 (예 : GitHub에서 자주 사용하는 경우) 지문 형식을 지정 하는 옵션도 지원 하므로 -E md5명령에 추가하면 됩니다.


가장 간단한 답변은 +1입니다. 에서 man ssh-add옵션 -l"모든 정체성의 목록 지문 현재 에이전트에 의해 표현"입니다
XavierStuvw

8

Windows에서 PuTTY / Pageant를 실행중인 경우 Puant (.ppk) 키를 Pageant에로드하면 지문이 표시됩니다. 사용중인 것을 잊어 버린 경우에 매우 유용합니다.

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


3
고맙습니다. 때때로 우리는 리눅스 사람들이 창문에 대해 잊어 버립니다. 특히 OP가 언급 한 퍼티와 같습니다.
Jmons

왜 전 세계에 알려질 수있는 검은 공개 키를 페인트 했습니까?
Michu93

8

이것은 DigitalOcean 액 적을 만들기 위해 SSH 키 핑거 프린트를 얻는 데 사용하는 쉘 기능입니다 .

fingerprint() {
    pubkeypath="$1"
    ssh-keygen -E md5 -lf "$pubkeypath" | awk '{ print $2 }' | cut -c 5-
}

에 넣고 ~/.bashrc소스를 입력하면 다음과 같이 지문을 얻을 수 있습니다.

$ fingerprint ~/.ssh/id_rsa.pub
d2:47:0a:87:30:a0:c0:df:6b:42:19:55:b4:f3:09:b9

2

SSH 에이전트가 실행중인 경우

ssh-add -l

모든 ID의 RSA 지문 -L을 나열 하거나 공개 키를 나열합니다.

에이전트가 실행 중이 아닌 경우 다음을 시도하십시오.

ssh-agent sh -c 'ssh-add; ssh-add -l'

공개 키의 경우 :

ssh-agent sh -c 'ssh-add; ssh-add -L'

' 에이전트에 ID가 없습니다. 그런 다음 ssh-keygen먼저 RSA 키를 생성해야합니다 .


openssh를 설치 한 후 퍼티를 사용하여 서버에 연결을 시도했습니다. ssh-ed25519256 키 지문이 표시되지만 "ID 없음"메시지가 나타납니다. 이 키를 어디서 찾을 수 있는지 알고 있습니까? 새로운 RSA 키를 생성하는 것과 비교하여이 키를 사용하는 데 단점이 있습니까?
lordcheeto

아래에서 찾았습니다 /etc/ssh/ssh_host_ed25519_key.pub. 질문의 두 번째 부분은 남아 있습니다.이 자동 생성 키를 사용하는 데 단점이 있습니까?
lordcheeto

1

때로는 ~/.ssh디렉토리 에 많은 키가있을 수 있으며 GitHub / Gitlab / etc에 표시된 지문과 일치하는 키를 모를 수 있습니다.

~/.ssh디렉토리 에있는 모든 키의 키 파일 이름과 MD5 지문을 표시하는 방법은 다음과 같습니다 .

cd ~/.ssh
find . -type f -exec printf "\n{}\n" \; -exec ssh-keygen -E md5 -lf {} \;

(매개 변수의 의미 에 대해서는 명령에 대한이 답변을 참조하십시오.find .

하나의 키에 속하는 개인 / 공용 파일은 동일한 지문을 가지므로 중복이 표시됩니다.


0

Google Compute Engine은 Linux 인스턴스의 직렬 출력에 SSH 호스트 키 지문을 표시합니다. API는 GCE에서 해당 데이터를 가져올 수 있으며 인스턴스에 로그인 할 필요가 없습니다.

직렬 출력에서 ​​다른 곳을 찾지 못했습니다. 지문은 좀 더 프로그래머에게 친숙한 장소에 있어야한다고 생각합니다.

그러나 인스턴스 유형에 따라 다릅니다. Debian 7 (Wheezy) f1-micro 인스턴스를 사용하고 있습니다.


-1

첫 번째 연결 전에 원격 SSH 서버를 확인하려면 www.server-stats.net/ssh/를 참조하십시오. 에서 서버의 모든 SHH 키와 키를 알 수있는 위치를 확인할 수 있습니다.

이는 SSL 인증서와는 다르지만 처음으로 SSH 서버에 연결하기 전에 반드시 수행해야 할 작업입니다.


4
사용자는 타사 웹 사이트가 아닌 OS 자체의 명령 줄을 찾고있었습니다.
Andrew Barber

따라서 기본적으로 컨버전스 플러그인 이며 SSL 대신 SSH를 제외하고 하나의 공증인 만 있습니다. 맞습니까?
Parthian Shot

-1

Fedora에서 [locate ~ / .ssh]는 키가 @임을 알려줍니다.

/root/.ssh
/root/.ssh/authorized_keys

OP는 키를 어디에서 찾을 수 있는지 알고있는 것 같습니다 (그렇지 않습니다 ~/.ssh/id*.pub).
Gert van den Berg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.