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_hosts및 authorized_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 -l및 ssh-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.