ssh-keyscan 명령은 -t 옵션과 함께 작동하지만, Known_hosts 파일에서는 어떻게 작동합니까?

ssh-keyscan 명령은 -t 옵션과 함께 작동하지만, Known_hosts 파일에서는 어떻게 작동합니까?

ssh-keyscan명령 과 관련하여 -t다음과 같이 options 와 함께 실행되는 경우:

ssh-keyscan -t ecdsa 192.168.1.X

다음과 같은 예상 데이터를 반환합니다.

# 192.168.1.X:22 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
192.168.1.X ecdsa-sha2-nistp256 XxXxXxX...XxXxXxX

위에 표시된 명령은 동일한 LAN에 있는 6개의 다른 IP에서 테스트되었으며 모든 것이 잘 작동했습니다. 또한 ed25519및 키 유형을 사용하여 rsa동일한 성공적인 결과를 얻었습니다 . 예를 들면 다음과 같습니다.

ssh-keyscan -t ed25519 192.168.1.X
ssh-keyscan -t rsa 192.168.1.X

여기까지 -t옵션은 -을 의미합니다.유형- 필터로서 잘 작동합니다. 이 시점에서 나는 이 옵션에 대해 명확하게 이해했습니다 -t.

노트

필터가 없거나 키 유형이 표시되지 않습니다. 이 -t옵션은 사용되지 않습니다. 따라서 다음과 같습니다.

ssh-keyscan 192.168.1.X

특정 IP에 대해 반환되는 데이터에는 3가지 키 유형이 포함됩니다.


이제 일부 튜토리얼에서 이 옵션에 대해 읽었 -t지만 지금은 ~/.ssh/known_hosts파일을 사용하고 있습니다.

이제 ~/.ssh/known_hosts다음 명령을 사용하여 파일과 항목을 삽입했습니다.

ssh-keyscan -H 192.168.1.X >> ~/.ssh/known_hosts

-H옵션을 살펴보세요. 호스트 이름/IP의 해시에서 작동합니다. 물론 동일한 LAN에 있는 6개의 다른 IP에 대해 동일한 명령이 6번 실행되었습니다.

다음 명령을 실행합니다.

ssh-keyscan -t <KEY> -f ~/.ssh/known_hosts

어디열쇠rsa또는 ecdsa또는 일 수 있습니다 .ed25519

출력은 다음과 같습니다(약 N 줄).

getaddrinfo |1|XxXxXxX=|XxXxXxX=: Name or service not known
...
getaddrinfo |1|ZzZzZzZ=|ZzZzZzZ=: Name or service not known

호스트 이름/IP가 해시되어 있기 때문에 이것이 예상되는 것 같습니다.내가 틀렸다면 정정해주세요.

현재 콘텐츠 유지그리고이 6개의 IP에 대해 동일한 콘텐츠를 다시 추가하되 해시는 제외합니다.

ssh-keyscan 192.168.1.X >> ~/.ssh/known_hosts

있음을 관찰하십시오.아니요옵션 -H. 그런 다음 다음 명령을 실행하면:

ssh-keyscan -t ecdsa -f ~/.ssh/known_hosts

이제 두 청크의 데이터를 볼 수 있습니다.

하나

getaddrinfo |1|XxXxXxX=|XxXxXxX=: Name or service not known

이것이 예상된 것인지 확실하지 않습니다. 이전 콘텐츠가 여전히 파일에 있다는 점을 명심하세요. 따라서 위에 표시된 내용은 필터 요청과 일치하는 키 유형을 기반으로 한다고 가정합니다.다시한번 말씀드리지만 제가 틀렸다면 정정해주세요

(이것질문그리고 이 글을 쓴 이유)

For each IP appears all the keys

이론적으로는 다음을 기반으로 한 데이터만 볼 수 있습니다.거르는- -t옵션을 통해 키 유형을 정의합니다.

질문

  • 블록 2는 필터링해야겠죠? 무엇이 빠졌나요? 아니면 뭔가 문제가 있나요?

노트

이 튜토리얼에서 사용되는 명령은 다음과 같습니다.

ssh-keyscan -t <KEY> -f ~/.ssh/known_hosts | sort -u ~/.ssh/known_hosts

하지만 파이프라인 이전의 첫 번째 부분을 잘 이해하고 싶습니다( |).

관련 정보