어떤 방법이 있나요?프로그래밍 방식으로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-keyscan
OpenSSH 버전 5.1 이전),
기본키 유형은 더 이상 사용되지 않으므로 rsa1
(SSH 프로토콜 1) 키 유형을 명시적으로 지정해야 합니다.
ssh-keyscan -t rsa,dsa hostname
Base64 키의 지문 해시 가져오기
ssh-keyscan
SSH 서버의 호스트 키를 인쇄하세요.Base64 인코딩
체재. 이를 지문 해시로 변환하려면 ssh-keygen
이 유틸리티와 해당 -l
옵션을 사용하여 지정된 공개 키의 지문을 인쇄할 수 있습니다.
Bash, Zsh(또는 Korn 쉘)를 사용하는 경우,프로세스 교체편리한 단일 라이너로 사용할 수 있습니다.
ssh-keygen -lf <(ssh-keyscan hostname 2>/dev/null)
노트: OpenSSH 7.2 이전 버전에서는 파일 읽기 기능이
ssh-keygen
Named 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로 바꾸십시오.