Как передать параметры SSH с помощью Fabric?

Мы пытаемся улучшить автоматизацию некоторых серверных процессов; мы используем Ткань. Я предполагаю, что мне придется управлять несколькими хостами, а это означает, что SSH-подключения должны быть установлены к серверам, которые раньше не были подключены по SSH. Если это произойдет, SSH всегда запрашивает проверку соединения, что нарушит автоматизацию.

Я работал над этой проблемой в том же процессе, используя параметр -o stricthostkeychecking=no в команде SSH, которую я использую для синхронизации кода с rsync, но мне также нужно будет использовать его при вызовах с Fabric.

Есть ли способ передать в Fabric параметры, специфичные для ssh, в частности тот, о котором я упоминал выше?


person Juan Carlos Coto    schedule 01.02.2013    source источник


Ответы (1)


Краткий ответ:

  1. Для новых хостов ничего не нужно. env.reject_unknown_hosts по умолчанию False
  2. Для известных хостов с измененными ключами 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 на момент написания статьи не дает нам контроля над именно этим поведением, но мы можем обойти его, просто пропустив загрузку known_hosts — если сравниваемый список хостов пуст, то проблем нет. Установите для env.disable_known_hosts значение True, если вы хотите такое поведение; по умолчанию это False, чтобы сохранить поведение SSH по умолчанию.

Предупреждение Включение env.disable_known_hosts оставляет вас открытыми для атак «человек посередине»! Пожалуйста, используйте с осторожностью.

person Peter Lyons    schedule 01.02.2013