SSH 서버 키 지문 가져오기

SSH 서버 키 지문 가져오기

어떤 방법이 있나요?프로그래밍 방식으로SSH 서버 키 지문 가져오기확인이 필요하지 않습니다그것에?

시도 중이지만 ssh -v user@host false 2>&1 | grep "Server host key"키 기반 인증이 설정되지 않은 경우 비밀번호를 기다리는 동안 멈춥니다.

답변1

ssh-keyscan합계를 결합하여 이를 수행 할 수 있습니다 ssh-keygen.

$ file=$(mktemp)
$ ssh-keyscan host > $file 2> /dev/null
$ ssh-keygen -l -f $file
521 de:ad:be:ef:de:ad:be:ef:de:ad:be:ef:de:ad:be:ef host (ECDSA)
4096 8b:ad:f0:0d:8b:ad:f0:0d:8b:ad:f0:0d:8b:ad:f0:0d host (RSA)
$ rm $file

편집하다: OpenSSH 7.2부터 이 oneliner가 작동합니다.

ssh-keyscan host | ssh-keygen -lf -

(@mykhal에 대한 크레딧)

답변2

최근에 이 작업을 직접 수행해야 했기 때문에 수행 방법을 설명하는 답변을 추가해야 한다고 생각했습니다(다음 버전 사용).OpenSSH 7.2 이상) 한 줄에 프로세스 대체 사용:

ssh-keygen -lf <(ssh-keyscan localhost 2>/dev/null)

( localhost여기서 호스트 이름으로 바꾸십시오)


다음 텍스트에서는 이러한 명령이 작동하는 방식을 설명하고 OpenSSH 유틸리티의 이전 버전과 최신 버전 간의 일부 동작 차이점을 강조합니다.

공개 호스트 키 받기

ssh-keyscan명령은 사용자가 SSH 서버에 인증하지 않고도 공개 호스트 키를 얻을 수 있도록 개발되었습니다. 매뉴얼 페이지에서:

ssh-keyscan여러 호스트에 대한 공개 SSH 호스트 키를 수집하는 유틸리티입니다. 파일을 구축하고 확인하는 데 도움이 되도록 설계되었습니다 ssh_known_hosts.

키 유형

가져올 키 유형을 지정하려면 이 옵션을 사용합니다 -t.

  • rsa1(더 이상 사용되지 않는 SSH 프로토콜 버전 1)
  • rsa
  • dsa
  • ecdsa(OpenSSH 최신 버전)
  • ed25519(OpenSSH 최신 버전)

최신 OpenSSH 버전에서는기본가져올 키 유형은 rsa (버전 5.1부터), ecdsa(버전 6.0부터) 및 ed25519(버전 6.7부터)입니다.

그리고구 버전( ssh-keyscanOpenSSH 버전 5.1 이전), 기본키 유형은 더 이상 사용되지 않으므로 rsa1(SSH 프로토콜 1) 키 유형을 명시적으로 지정해야 합니다.

ssh-keyscan -t rsa,dsa hostname

Base64 키의 지문 해시 가져오기

ssh-keyscanSSH 서버의 호스트 키를 인쇄하세요.Base64 인코딩 체재. 이를 지문 해시로 변환하려면 ssh-keygen이 유틸리티와 해당 -l옵션을 사용하여 지정된 공개 키의 지문을 인쇄할 수 있습니다.

Bash, Zsh(또는 Korn 쉘)를 사용하는 경우,프로세스 교체편리한 단일 라이너로 사용할 수 있습니다.

ssh-keygen -lf <(ssh-keyscan hostname 2>/dev/null)

노트: OpenSSH 7.2 이전 버전에서는 파일 읽기 기능이 ssh-keygenNamed Pipe(FIFO)를 잘 처리하지 못하여 이 방법이 통하지 않아 임시 파일이 필요했습니다.

해시 알고리즘

최신 버전 ssh-keygen인쇄 버전SHA256키의 지문 해시입니다. 얻기 위해MD5서버 키 지문의 해시 값(이전 동작). 이 -E 옵션을 사용하여 해싱 알고리즘을 지정할 수 있습니다.

ssh-keygen -E md5 -lf <(ssh-keyscan hostname 2>/dev/null)

파이프 사용

dash예를 들어 프로세스 교체 기능이 없는 POSIX 셸을 사용하는 경우 임시 파일을 사용하는 다른 솔루션이 작동합니다. 그러나 최신 버전의 OpenSSH(7.2 이후)에서는 파일 이름을 표준 입력 스트림으로 ssh-keygen허용하여 단일 행 파이프 명령을 허용하므로 간단한 파이프를 사용할 수 있습니다 .-

ssh-keyscan hostname 2>/dev/null | ssh-keygen -E md5 -lf -

답변3

nmap이 기능은 스크립트를 사용하여 ssh-hostkey제공됩니다 .

키의 16진수 지문을 반환하려면 다음 안내를 따르세요.

$ nmap [SERVER] --script ssh-hostkey

키 내용을 반환하려면 다음 안내를 따르세요.

$ nmap [SERVER] --script ssh-hostkey --script-args ssh_hostkey=full

키의 시각적 거품을 반환합니다.

$ nmap [SERVER] --script ssh-hostkey --script-args ssh_hostkey='visual bubble'

위의 항목을 모두 반환하려면 다음을 수행하세요.

$ nmap [SERVER] --script ssh-hostkey --script-args ssh_hostkey=all

원천:nmap 문서

답변4

파일질라 쇼16진수 md5 해시를 사용하는 키체재.

당신의우분투 리눅스머신은 다음 명령을 사용합니다.

ssh-keygen -l -E md5 -f <(ssh-keyscan localhost 2>/dev/null)

참고: "localhost"를 확인하려는 컴퓨터의 IP로 바꾸십시오.

관련 정보