Ответ 1
Короткий ответ:
- Для новых хостов ничего не нужно.
env.reject_unknown_hosts
по умолчаниюFalse
- Для известных хостов с измененными клавишами
env.disable_known_hosts = True
решит продолжить подключение к измененным узлам.
Читайте старые документы: http://docs.fabfile.org/en/1.5/usage/ssh.html#unknown-hosts
Библиотека paramiko может загружать ваш файл known_hosts, и затем будет сравнивать любой хост, к которому он подключается, с этим сопоставлением. Доступны настройки для определения того, что происходит, когда неизвестный хост (узел, чье имя пользователя или IP не найден в known_hosts):
- Отклонить: ключ хоста отклонен и соединение не выполнено. Это приводит к исключению Python, которое завершит ваш сеанс Fabric сообщением о том, что хост неизвестен.
- Добавить: новый ключ хоста добавляется в список известных хостов в памяти, происходит соединение, и все продолжается нормально. Обратите внимание, что это не изменяет ваш файл known_hosts на диске!
- Спросите: еще не реализовано на уровне Fabric, это опция библиотеки paramiko, которая приведет к тому, что пользователю будет предложено ввести неизвестный ключ и принять его.
Отклонить или добавить хосты, как указано выше, контролируется в Fabric через параметр env.reject_unknown_hosts, который по умолчанию False для удобства ради. Мы считаем, что это допустимый компромисс между удобство и безопасность; любой, кто чувствует себя иначе, может легко изменить их fabfiles на уровне модуля для установки env.reject_unknown_hosts = True.
http://docs.fabfile.org/en/1.5/usage/ssh.html#known-hosts-with-changed-keys
Известные хосты с измененными клавишами
Точка отслеживания ключа/отпечатка пальца SSH такова, что атаки "человек-в-середине" могут быть обнаружены: если злоумышленник перенаправляет ваш SSH-трафик на компьютер под его контролем и притворяется ваш исходный сервер назначения, ключи хоста не будут совпадать. Таким образом, поведение по умолчанию SSH (и его реализация Python) заключается в том, чтобы немедленно прекратите соединение, если хост, ранее записанный в known_hosts внезапно начинает посылать нам другой ключ хоста.
В некоторых случаях, таких как некоторые развертывания EC2, вы можете захотеть игнорировать эту потенциальную проблему. Наш уровень SSH, на момент написания статьи, не дает нам контроля над этим точным поведением, но мы можем обойти стороной это просто пропуская загрузку известных_hosts - если список хостов по сравнению с пустым, тогда проблема не возникает. Задавать env.disable_known_hosts - True, если вы хотите этого поведения; это False по умолчанию, чтобы сохранить поведение SSH по умолчанию.
Предупреждение Включение env.disable_known_hosts оставит вас широко открытыми для атаки "человек-в-середине"! Пожалуйста, используйте с осторожностью.