Я написал этот небольшой служебный скрипт:
for h in $SERVER_LIST; do ssh $h "uptime"; done
Когда новый сервер добавлен $SERVER_LIST
, скрипт останавливается с:
The authenticity of host 'blah.blah.blah (10.10.10.10)' can't be established.
RSA key fingerprint is a4:d9:a4:d9:a4:d9a4:d9:a4:d9a4:d9a4:d9a4:d9a4:d9a4:d9.
Are you sure you want to continue connecting (yes/no)?
Я пробовал yes
:
for h in $SERVER_LIST; do yes | ssh $h "uptime"; done
без удачи
Есть ли способ параметризации ssh
для автоматического принятия любого нового ключа?
yes
выдает «y», вам, возможно, повезло большеfor h in $SERVER_LIST; do yes yes | ssh $h "uptime"; done
(обратите внимание на дополнительное «да», которое говорит «да», что сказать вместо «y»). «).Ответы:
Используйте параметр StrictHostKeyChecking, например:
Эту опцию также можно добавить в ~ / .ssh / config, например:
Обратите внимание, что после изменения ключей хоста вы получите предупреждение, даже с этой опцией:
Если ваши хосты не часто переустанавливаются, вы можете сделать это менее безопасным (но более удобным для часто меняющихся ключей хостов) с помощью
-oUserKnownHostsFile=/dev/null
опции. Это отбрасывает все полученные ключи хоста, поэтому оно никогда не выдаст предупреждение.С 18.04, есть новая возможность:
StrictHostKeyChecking=accept-new
. Отman 5 ssh_config
:источник
ssh-keyscan
является предпочтительным, если он доступен в вашей системе.ssh-keyscan
подход более разумный. Для локальных виртуальных машин и других узлов в доверенных сетях с динамическими / повторно используемыми IP-адресами описанный подход достаточно хорош.ssh-keyscan
решение подвержено атаке «человек посередине» только один разssh-keyscan
.-oStrictHostKeyChecking=no
Раствор склонен к атаке человек-в-середине каждый раз , когдаssh
это выполняющиеся.Вы можете использовать следующую команду, чтобы добавить отпечаток пальца для сервера в ваших known_hosts
ПРИМЕЧАНИЕ. Замените <ip-address> и <hostname> на IP-адрес и DNS-имя сервера, который вы хотите добавить.
Единственная проблема в этом заключается в том, что у вас будет несколько серверов в ваших известных_хостах дважды. Это не так уж важно, просто упомянуть. Чтобы убедиться в отсутствии дубликатов, вы можете сначала удалить все серверы, выполнив сначала следующее:
Таким образом, вы можете запустить:
При удалении просто для повторного добавления следует помнить одну вещь: вы, по сути, удаляете безопасность проверки отпечатка пальца. Так что вы определенно не захотите запускать этот скрипт перед каждым выполнением вашего служебного скрипта.
источник
-H
хэширует имена хостов и адреса.Я немного опоздал с этим ответом, но разумным способом было бы выполнить ssh-keyscan на новой машине, прежде чем вы начнете сбор данных о доступности.
Отключение проверки работоспособности для удобства звучит как плохой план, даже если вы думаете, что полностью контролируете окружающую среду.
источник
StrictHostKeyChecking no
Для автоматического добавления списка серверов мы можем сделать следующее:
Добавить IP-адреса серверов в список файловых серверов
IP-адреса должны быть добавлены в следующем формате.
Выход из
cat servers-list
Измените вышеуказанные IP-адреса, заменив свой.
Ниже команда добавит все серверы из списка.
источник