사용된 명령

사용된 명령

원격 컴퓨터에서 가정용 컴퓨터로 연결하려고 할 때 새로 연결하는 호스트의 지문을 어떻게 확인할 수 있습니까? 처음 연결했을 때 나는 이것을 얻었습니다:

[email protected]$ ssh [email protected]:~/
The authenticity of host '[home-machine.org]:222 ([x.xx.xx.xx]:222)' can't be established.
ECDSA key fingerprint is SHA256:6lr/VtTwgrKZVNZQ8y8Le/ilfBYfo0e+9UliSg+AD2k.
Are you sure you want to continue connecting (yes/no)? 

내 "가정용 컴퓨터"의 지문을 어떻게 확인할 수 있나요? 나는 다음과 같이 내 집 컴퓨터에 그것들을 나열하려고 했습니다.

[email protected]:~$ for pubkey_file in /etc/ssh/*.pub; do ssh-keygen -lf ${pubkey_file};  done
1024 d1:ef:db:b4:24:fc:ca:fe:e1:11:8c:36:0a:77:90:49 /etc/ssh/ssh_host_dsa_key.pub (DSA)
256 d9:25:51:16:ca:76:bd:8f:b8:6a:79:a2:1c:81:4b:4c /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
2048 3a:c6:2d:29:7c:b9:16:e8:ed:1c:a8:26:5d:ab:0d:1e /etc/ssh/ssh_host_rsa_key.pub (RSA)
[email protected]:~$ 

하지만 해당 키의 형식이 다른 것 같습니다. 이것은 일종의 지문 MD5인가요? 지문을 통합된 형식으로 유지하려면 어떻게 해야 합니까?

답변1

SSH 서버는 MD5 해시보다 훨씬 더 안전한 SHA256 공개 키 해시를 제공합니다.

그런 다음 MD5 해시 대신 SHA256을 사용하도록 ssh-keygen에 지정해야 합니다. 컴퓨터에서 명령을 실행해 보세요.가정용 기계(귀하의 예에서는 원격 컴퓨터에서 연결을 시도합니다):

for pubkey_file in /etc/ssh/*.pub; do ssh-keygen -lf ${pubkey_file} -E sha256; done

답변2

사용된 명령

  • 서버에 저장된 공개 호스트 키의 ASCII 아트를 표시합니다(Ssh를 통해 연결하는 서버 측에서 수행됨).

     ssh-keygen -l -v -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
    

    -엘: 지정된 공개키 파일의 지문을 표시합니다.

    -V: 시각적 (ASCII-ART)

    -E md5: 지문을 계산하는 데 사용되는 해시 알고리즘("md5" 또는 "sha256")입니다. (사용 가능한 경우 "sha256"이 선호됩니다). (이전 버전의 ssh-keygen에서는 사용하지 못할 수도 있습니다)

    -에프: 파일

  • 원격 서버 공개 호스트 키의 ASCII 아트를 표시합니다(클라이언트 측에서 수행되며 SSH를 통해 FROM에서 연결).

     ssh -o visualhostkey=yes -o FingerprintHash=md5 <host_server_to_connect>
    

    -영형: 옵션

    시각적 호스트 키: 시각적 (ASCII-ART)

    지문해시: 사용할 해시 알고리즘(서버에서 얻은 것과 동일한 것을 사용: md5 또는 sha256)

호스트/서버의 신뢰성을 확인하는 단계

  • 첫째, 1.이 작업은 서버(ssh를 통해 연결하려는 서버)에서 로컬로 수행되어야 합니다. 첫 번째 ASCII 아트가 제공됩니다. 인쇄하거나 사진을 찍어보세요.

  • 둘째, 2.첫 번째 SSH 연결에서 수행됩니다. 두 번째 ASCII 아트가 표시됩니다. ascii-art가 동일하면 대답할 수 있습니다.~로"내가 믿나요?"질문(예: Are you sure you want to continue connecting (yes/no)).

  • 1. 서버측
$ ssh-keygen -l -v -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
256 2e:a6:b3:27:14:12:0b:79:df:9a:7f:bd:4d:b1:e0:b6   (ECDSA)
+--[ECDSA  256]---+
| .               |
|o o              |
| o + .           |
|  o o .          |
|   . +  S . .    |
|    +  . . . o   |
|   . .o ..o o    |
|    ooo....+     |
|    o= .  E..    |
+-----------------+
  • 2. 클라이언트 측
$ ssh -o visualhostkey=yes -o FingerprintHash=md5 192.168.12.211
The authenticity of host '192.168.12.211 (192.168.12.211)' can't be established.
ECDSA key fingerprint is MD5:2e:a6:b3:27:14:12:0b:79:df:9a:7f:bd:4d:b1:e0:b6.
+---[ECDSA 256]---+
| .               |
|o o              |
| o + .           |
|  o o .          |
|   . +  S . .    |
|    +  . . . o   |
|   . .o ..o o    |
|    ooo....+     |
|    o= .  E..    |
+------[MD5]------+
Are you sure you want to continue connecting (yes/no)? 

좀 더 설명

첫 번째 명령은 입력으로 제공한 파일의 지문(및 지문 자체)에 해당하는 ascii-art를 표시합니다. 입력으로 제공하는 파일은 공개됩니다.주인서버의 키입니다. 클라이언트가 (처음뿐만 아니라) 연결할 때 서버는 공개 호스트 키를 보냅니다. 이 공개 호스트 키는 에서 검색됩니다 ~/.ssh/known_hosts. 공개 키가 파일에 있으면 괜찮습니다. 호스트(서버)가 알려져 있으므로 사용자를 인증하기 위한 다음 단계로 이동합니다(사용자 인증은 이 게시물에서 설명되지 않습니다). 공개 키가 파일에 없으면 클라이언트는 해시 알고리즘을 사용하여 이 공개 호스트 키의 지문을 계산합니다(다른 해시 알고리즘은 다른 지문을 제공합니다). 이전에 계산된 이 지문은(해당 옵션이 제공되는 경우 ascii-art와 함께) 표시되며 이 지문을 인식하는지 여부에 따라 예 또는 아니요로 대답해야 합니다(이 지문은 공개 호스트 키의 이미지/해시입니다. 섬기는 사람). 예라고 대답하면 서버의 공개 키(지문 아님)가 파일에 추가됩니다 ~/.ssh/known_hosts.

~/.ssh/known_hosts우리는 그것이 아래에 있다는 것을 알 수 있습니다당신의홈(~) 디렉토리이 호스트(서버)를 신뢰하지만 다른 사용자는 귀하와 동일한 것을 신뢰하지 않을 수 있습니다. 또한 서버의 호스트 공개키는 사용자에게 종속되지 않으므로 /etc/ssh/.

두 번째 명령은 다음에서 받은 공개 키의 지문과 ASCII 아트를 표시합니다.Host_server_to_connect(옵션에 제공된 해시 알고리즘에 따름) 이는 ssh만 수행하는 것과 동일하지만 더 많은 시각적 옵션이 있으므로 연결은 일반 ssh 연결과 동일한 방식으로 계속됩니다.

답변3

섬기는 사람

ssh-keygen -l -v -f /etc/ssh/ssh_host_ed25519_key

해당 디렉터리에 있는 다른 파일 중 하나를 사용하여 이를 클라이언트의 알고리즘과 일치시켜야 할 수도 있습니다. 파일에는 올바른 권한이 있으므로 공개 키를 사용합니다.

예를 들어 다음과 같이 작성해야 할 수도 있습니다.

ssh-keygen -l -v -f /etc/ssh/ssh_host_rsa_key

고객

ssh -o visualhostkey=yes -o FingerprintHash=sha256

관련 정보