다양한 SSH 지문(공개 키 해시) 형식을 비교하는 방법은 무엇입니까?

다양한 SSH 지문(공개 키 해시) 형식을 비교하는 방법은 무엇입니까?

SSH 서버/호스트에 로그인하면 다음과 같이 공개 키의 해시가 올바른지 묻는 메시지가 나타납니다.

# ssh 1.2.3.4
The authenticity of host '[1.2.3.4]:22 ([[1.2.3.4]:22)' can't be established.
RSA key fingerprint is SHA256:CxIuAEc3SZThY9XobrjJIHN61OTItAU0Emz0v/+15wY.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.

비교할 수 있도록 이전에 SSH 서버에서 이 명령을 사용하고 결과를 클라이언트의 파일에 저장했습니다.

# ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
2048 f6:bf:4d:d4:bd:d6:f3:da:29:a3:c3:42:96:26:4a:41 /etc/ssh/ssh_host_rsa_key.pub (RSA)

몇 가지 중요한 이유로(의심할 여지 없이) 명령 중 하나가 해시를 표시하는 다른(업데이트된?) 방법을 사용하여 명령을 비교하려면 적지 않은 변환이 필요하기 때문에 중간자 공격자에게 큰 도움이 됩니다.

이 두 해시를 어떻게 비교할 수 있습니까? 아니면 더 나은 방법으로 한 명령이 다른 명령의 형식을 사용하도록 강제할 수 있습니까?

-E옵션은 ssh-keygen서버에서 사용할 수 없습니다.

답변1

SSH

# ssh -o "FingerprintHash sha256" testhost
The authenticity of host 'testhost (256.257.258.259)' can't be established.
ECDSA key fingerprint is SHA256:pYYzsM9jP1Gwn1K9xXjKL2t0HLrasCxBQdvg/mNkuLg.

# ssh -o "FingerprintHash md5" testhost
The authenticity of host 'testhost (256.257.258.259)' can't be established.
ECDSA key fingerprint is MD5:de:31:72:30:d0:e2:72:5b:5a:1c:b8:39:bf:57:d6:4a.

SSH 키 스캐닝 및 SSH 키 생성

또 다른 방법은 MD5 및 SHA256 해시를 지원하는 시스템에 공개 키를 다운로드하는 것입니다.

# ssh-keyscan testhost >testhost.ssh-keyscan

# cat testhost.ssh-keyscan
testhost ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItb...
testhost ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0U...
testhost ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMKHh...

# ssh-keygen -lf testhost.ssh-keyscan -E sha256
256 SHA256:pYYzsM9jP1Gwn1K9xXjKL2t0HLrasCxBQdvg/mNkuLg testhost (ECDSA)
2048 SHA256:bj+7fjKSRldiv1LXOCTudb6piun2G01LYwq/OMToWSs testhost (RSA)
256 SHA256:hZ4KFg6D+99tO3xRyl5HpA8XymkGuEPDVyoszIw3Uko testhost (ED25519)

# ssh-keygen -lf testhost.ssh-keyscan -E md5
256 MD5:de:31:72:30:d0:e2:72:5b:5a:1c:b8:39:bf:57:d6:4a testhost (ECDSA)
2048 MD5:d5:6b:eb:71:7b:2e:b8:85:7f:e1:56:f3:be:49:3d:2e testhost (RSA)
256 MD5:e6:16:94:b5:16:19:40:41:26:e9:f8:f5:f7:e7:04:03 testhost (ED25519)

답변2

로컬 키를 보는 방법에만 대답하면 다른 답변에서도 볼 수 있지만 놓칠 수 있습니다. 적어도 Ubuntu 19.04에서는 SHA256이 ssh-keygen의 기본 형식입니다.

$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 SHA256:CxIuAEc3SZThY9XobrjJIHN61OTItAU0Emz0v/+15wY user@host (RSA)

그러나 물론 SHA256을 명시적으로 지정할 수도 있습니다.

$ ssh-keygen -lf ~/.ssh/id_rsa.pub -E sha256

MD5를 보려면:

$ssh-keygen -lf ~/.ssh/id_rsa.pub -E md5
2048 f6:bf:4d:d4:bd:d6:f3:da:29:a3:c3:42:96:26:4a:41 user@host (RSA)

그건 그렇고, 이것은 GitHub가 계정의 SSH 키 목록에 사용했던 형식입니다. 세부정보: $man ssh-keygen.

관련 정보