Как управлять моим .ssh/known_hosts файлом

Наши серверы Windows и Linux, выполненные в значительной степени исключительно на HP. Мы были плохо записаны IBM некоторое время назад, потому что мы не могли не отставать от лавинной рассылки патчей к их ошибочному встроенному микропрограммному обеспечению и никогда не возвращались. Кроме того, работа на уровне $VERYLARGECORP означает, что они наклоняются назад с поддержкой.

48
задан 15 January 2017 в 21:22
4 ответа

Для обнаружения, какая запись для известного имени хоста в known_hosts:

 # ssh-keygen -H  -F <hostname or IP address>

Удалить однократный въезд из known_hosts:

 # ssh-keygen -R <hostname or IP address>
65
ответ дан 28 November 2019 в 19:38

Если у Вас есть список всех Ваших хостов, можно сделать что-то как

ssh-keyscan -t rsa,dsa -f list_of_hosts > ~/.ssh/known_hosts

Это перезапишет Ваш .ssh/known_hosts файл с недавно сгенерированным на основе сканирования хостов.

И также сделайте то, что предлагает theotherreceive; HashKnownHosts является большим количеством раздражения, чем справка здесь.

27
ответ дан 28 November 2019 в 19:38

С трудностью...

Ubuntu именами хостов хешей по умолчанию known_hosts файл (это не значение по умолчанию openssh поведение), для создания помех любому читающему файл для знания, к каким системам Вы получаете доступ.

Если Вы действительно хотели вычистить файл, самая простая опция, вероятно, просто удаляют его и проверяют ключи на серверы, которые Вы знаете, как они возникают, но действительно я просто оставил бы known_hosts в покое.

Можно мешать новым записям хостов быть хешированными путем комментирования опции в/etc/ssh/ssh_config

#HashKnownHosts yes
21
ответ дан 28 November 2019 в 19:38
  • 1
    Чистка ~/.ssh/known_hosts также помогает, когда конфигурация удаленных изменений хоста и ssh показывает предупреждение. Однако нужно быть осторожным с этим и проигнорировать предупреждение только для доверяемых хостов. –  Alex 28 August 2009 в 11:28

В моем файле known_hosts было более 300 устаревших старых записей. Не уверен, что он будет работать для всех систем (или даже для большинства систем), но вот мой сценарий вопросов и ответов. Возможно, вам придется настроить совпадающие строки или местоположение.

#!/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
2
ответ дан 28 November 2019 в 19:38

Теги

Похожие вопросы