호스트 이름 목록을 사용하여 .ssh/known_hosts의 암호화된 호스트 이름을 해독하는 방법은 무엇입니까?

호스트 이름 목록을 사용하여 .ssh/known_hosts의 암호화된 호스트 이름을 해독하는 방법은 무엇입니까?

스크립트를 찾으려고 노력 중이에요암호 해독(해시되지 않음) Known_hosts 파일의 SSH 호스트 이름호스트 이름 목록을 전달하여.

그러니정확히 반대:

ssh-keygen -H -f known_hosts

또는 SSH 구성 HashKnownHosts가 아니요로 설정된 경우 다음과 동일한 작업을 수행합니다.

ssh-keygen -R know-host.com -f known_hosts
ssh-keyscan -H know-host.com >> known_hosts

하지만 호스트 키를 다시 다운로드할 필요는 없습니다(ssh-keyscan으로 인해).

그것은 다음과 같습니다:

ssh-keygen --decrypt -f known_hosts --hostnames hostnames.txt

여기서 hostnames.txt에는 호스트 이름 목록이 포함되어 있습니다.

답변1

의 행은 known_hosts암호화되지 않고 해시됩니다. 암호화되어 있지 않기 때문에 해독할 수 없습니다. 당신은 그것들을 "해시 해제"할 수 없습니다.해시시그게 전부입니다. 해시가 주어지면 원래 문자열을 찾는 것은 불가능합니다. "해시를 해제"하는 유일한 방법은 원래 문자열을 추측하고 추측을 확인하는 것입니다.

호스트 이름 목록이 있는 경우 이를 전달 ssh-keygen -F하고 호스트 이름으로 바꿀 수 있습니다.

while read host comment; do
  found=$(ssh-keygen -F "$host" | grep -v '^#' | sed "s/^[^ ]*/$host/")
  if [ -n "$found" ]; then
    ssh-keygen -R "$host"
    echo "$found" >>~/.ssh/known_hosts
  fi
done <hostnames.txt

1 실용적인 의미에서 오늘날 존재하는 모든 컴퓨터는 이 작업을 완료하는 데 현재 우주 시대보다 더 오랜 시간이 걸릴 것입니다.

답변2

ssh-keygen(1) 매뉴얼 페이지는 이 -F hostname옵션을 보여줍니다:

Known_hosts 파일에서 지정된 호스트 이름을 검색하여 발견된 일치 항목을 나열합니다. 이 옵션은 해시된 호스트 이름이나 주소를 찾는 데 유용하며, -H발견된 키를 해시 형식으로 인쇄하는 옵션과 함께 사용할 수도 있습니다.

이것이 당신이 원하는 것 같습니다.

답변3

나는 이 새로운 암호화된 파일이 단순히 알려진 호스트를 관리한다는 것을 발견했습니다. 텍스트를 복사하여 다른 위치에 붙여넣고 암호화된 Known_hosts 줄 위에 IP 및 장치에 대한 설명을 추가합니다. 암호를 해독하려고 해도 필요한 정보를 얻을 수 없습니다.

관련 정보