Назад | Перейти на главную страницу

Самый плавный рабочий процесс для обработки ошибок проверки хоста SSH?

Это простая проблема, с которой мы все сталкиваемся и, вероятно, решаем вручную, не задумываясь.

По мере изменения серверов, их повторной подготовки или перераспределения IP-адресов мы получаем сообщение о проверке хоста SSH ниже. Я заинтересован в оптимизации рабочего процесса для устранения этих ошибок идентификации ssh.

Учитывая следующее сообщение, я обычно vi /root/.ssh/known_hosts +434 и удалите (dd) оскорбительная линия.

Я видел, как разработчики / пользователи в других организациях удаляли свои весь known_hosts file из-за разочарования при просмотре этого сообщения. Я не захожу так далеко, но знаю, что есть более элегантный способ справиться с этим.

Подсказки?

[root@xt ~]# ssh las-db1

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
ed:86:a2:c4:cd:9b:c5:7a:b1:2b:cc:42:15:76:8c:56.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:434
RSA host key for las-db1 has changed and you have requested strict checking.
Host key verification failed.

Вы можете использовать ssh-keygen команда для удаления определенных записей по хосту:

ssh-keygen -R las-db1

Если у вас нет этой команды, вы всегда можете использовать sed:

sed -i '/las-db1/d' /root/.ssh/known_hosts

Как пользователь марионетки, мой метод решения этой проблемы состоит в том, чтобы фактически заставить мой марионеточный сервер собирать ключи моего хоста SSH и публиковать их во всех моих системах, которые устанавливают соединения SSH.

Таким образом, мне не нужно беспокоиться об их удалении. Девяносто девять процентов времени марионетка запускалась и обновляла ключи за меня, так как мои агенты запускаются каждые тридцать минут. Исключения для меня очень редки, и поэтому я не возражаю против быстрого редактирования общесистемного файла known_hosts, если я не хочу ждать.

class ssh::hostkeys {

  @@sshkey { "${::clientcert}_rsa":
    type => rsa,
    key => $sshrsakey,
    tag => 'rsa_key',
  }

  if 'true' == $common::params::sshclient {
    Sshkey <<| tag == 'rsa_key' |>> {
      ensure => present
    }
  }

  file {'/etc/ssh/ssh_known_hosts':
    ensure => present,
    owner => 'root',
    group => 'root',
    mode => 0644,
  }

}

В соответствии с примечания к выпуску openssh 5.6 , вам больше не нужно использовать ключи хостов:

Аутентификация на основе хоста теперь может использовать ключи хоста сертификата. Ключи CA должны быть указаны в файле known_hosts с использованием маркера @cert-Authority, как описано в sshd (8).

Предупреждение : Я никогда не слышал, чтобы кто-нибудь использовал эту функцию в продакшене. Используйте на свой страх и риск (но я считаю, что разработчики openssh достаточно параноики, чтобы не выпускать такую ​​убойную функцию без большого тестирования и аудита кода).

Я хотел бы добавить предложение, которое может помочь вам в очень конкретных случаях, когда безопасность менее важна.

У меня есть лабораторная среда с машинами, которые часто переустанавливаются. Каждый раз, когда это происходит, генерируются новые ключи хоста (возможно, я мог бы где-нибудь сохранить ключ хоста и установить его в сценарии после установки).

Поскольку безопасность не является для меня проблемой в этой лабораторной среде, а ключи меняются очень часто, в моем файле .ssh / config есть следующее:

Host lab-*
  User kenny
  IdentityFile ~/.ssh/lab_id_rsa
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null

Это гарантирует, что подключение к моим лабораторным машинам никогда больше не вызовет эту ошибку, и мой клиент ssh просто подключится без проверки ключа хоста.

Это то, что вы должны делать только в том случае, если безопасность вас вообще не волнует, потому что это ставит вас в уязвимое положение для атаки типа «человек посередине».

SSHFP DNS ResourceRecord может помочь в зависимости от того, насколько ваш ssh-клиент использует его. Храните все ваши отпечатки открытых ключей ssh ​​там с именем хоста.

Заранее внедрите DNSSEC или DNS через SSL.
http://www.ietf.org/rfc/rfc4255.txt

FreeIPA.org обрабатывает управление ключами хоста и пользователя, а также сертификаты PKI. Он также автоматически загружает записи DNS SSHFP при создании новых ключей.

Демон служб безопасности системы (SSSD) может быть настроен для кэширования и получения ключей SSH хоста, так что приложения и службы должны искать ключи хоста только в одном месте. Поскольку SSSD может использовать FreeIPA в качестве одного из поставщиков идентификационной информации, FreeIPA предоставляет универсальное и централизованное хранилище ключей. Администраторам не нужно беспокоиться о распространении, обновлении или проверке ключей SSH хоста.

http://docs.fedoraproject.org/en-US/Fedora/17/html/FreeIPA_Guide/host-keys.html