답변:
어려움으로 ...
우분투는 기본적으로 known_hosts 파일을 호스트 이름으로 해시합니다 (이것은 기본 openssh 동작이 아닙니다). 파일을 읽는 사람이 액세스하는 시스템을 알기가 어렵습니다.
파일을 정말로 지우고 싶다면 가장 간단한 옵션은 파일을 삭제하고 서버가 발생할 때 키를 확인하는 것입니다.하지만 known_hosts는 그대로 둡니다.
/ etc / ssh / ssh_config에서 옵션을 주석 처리하여 새 호스트 항목이 해시되는 것을 막을 수 있습니다
#HashKnownHosts yes
ssh root@something-new-or-new-dns-alias
. 원본 known_hosts
파일 을 새로 고치고 호스트 이름 / IP를 해독합니다.
known_hosts 파일에 오래된 파일이 300 개가 넘었습니다. 모든 시스템 (또는 대부분의 시스템)에서 작동하는지 확실하지 않지만 여기에 내 Q & D 스크립트가 있습니다. 일치하는 문자열이나 위치를 조정해야 할 수도 있습니다.
#!/bin/sh
list=`cat ~/.ssh/known_hosts | awk '{print $1}' |sed -e 's/,/ /g' | sort -u `
listsorted=$(printf "%s\n" ${list[@]} | sort -u)
echo $listsorted
#listsorted="10.2.10.1"
echo > /tmp/sshstat.txt
for host in $listsorted ;
do
echo $host
ssh -oBatchMode=yes -oConnectTimeout=2 root@${host} "exit" >/tmp/sshstat.txt 2>&1
ret=$?
if [ $ret -ne 0 ]; then
echo "Failed: $host"
echo sed -i.bak \"/$host/d\" "~/.ssh/known_hosts" | sh
else
grep "Offending RSA" /tmp/sshstat.txt | sed -e 's/:/ /g' | awk '{printf "sed -i.bak -e \"%dd\" %s \n", $6, "~/.ssh/known_hosts" }' | sh
fi
done
#echo $list
known_hosts
파일에서 작동하지 않으며 질문자가 "어떤 키가 어떤 호스트에 속하는지 어떻게 알 수 있습니까?"라고 묻기 때문에 그의 파일이 해시되었을 가능성이 큽니다. 그는 우분투에 있고 theotherreceive
우분투는 기본적으로 해시한다고 말합니다.
ssh-keyscan
list_of_hosts
파일의 형식 규칙이 매우 엄격 합니다. 각 주소 다음에 LF 다음에 LF가 없어도됩니다. 마지막 주소 뒤에 LF가 포함됩니다. 그렇지 않으면 생성 된 파일에 많은 쓰레기가 생깁니다.