Как создать записи SSHFP?

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

  • Что такое записи SSHFP?
  • Как выглядят записи SSHFP?
  • Как создать записи SSHFP?

4 Solutions collect form web for “Как создать записи SSHFP?”

Что такое записи SSHFP?

Записи SSHFP RR представляют собой записи DNS, содержащие отпечатки пальцев для открытых ключей, используемых для SSH. Они в основном используются с доменами, поддерживающими DNSSEC. Когда клиент SSH подключается к серверу, он проверяет соответствующую запись SSHFP. Если отпечатки пальцев записей совпадают с серверами, сервер является законным и безопасно подключаться.

Как выглядят записи SSHFP?

Записи SSHFP состоят из трех вещей:

  1. Алгоритм
  2. Тип отпечатка
  3. Отпечаток пальца (в шестнадцатеричном)

Алгоритм

Существует четыре различных алгоритма, определенных в SSHFP по состоянию на 2015 год . Каждый алгоритм представлен целым числом. Алгоритмы:

  • 1 – RSA
  • 2 – DSA
  • 3 – ECDSA
  • 4 – Ed25519

Тип отпечатка

Два типа отпечатков пальцев определены в SSHFP по состоянию на 2012 год . Каждый тип отпечатка пальца представлен целым числом. Эти:

  • 1 – SHA-1
  • 2 – SHA-256

Как создать записи SSHFP?

Вы можете использовать ssh-keygen для создания записей с использованием параметра -r , за которым следует имя хоста (которое не влияет на отпечатки пальцев, чтобы вы могли указать все, что вам нравится)

пример

Использование ssh-keygen и CentOS 6:

 [root@localhost ~]# ssh-keygen -r my.domain.com my.domain.com IN SSHFP 1 1 450c7d19d5da9a3a5b7c19992d1fbde15d8dad34 my.domain.com IN SSHFP 2 1 72d30d211ce8c464de2811e534de23b9be9b4dc4 

Заметка

Иногда ssh-keygen запрашивает местонахождение открытого сертификата. Если он спрашивает, вам придется запускать ssh-keygen несколько раз и каждый раз указывать другой сертификат, чтобы убедиться, что вы создаете все необходимые записи SSHFP. Ваши открытые ключи обычно находятся в /etc/ssh .

Я не уверен, что ssh-keygen работает с существующими ключами. Если нет, вы все равно можете легко собрать их в своей оболочке (что я предпочитаю) и без фантазии программного обеспечения или удаленных интерфейсов.

Такие записи, как упомянутые …

 my.domain.com IN SSHFP 2 1 72d30d211ce8c464de2811e534de23b9be9b4dc4 

… существует из 6 частей:

 part 1: hostname part 2: Usually "IN" for internet part 3: "SSHFP", the RR name for type 44 part 4: RSA keys = "1" DSA keys = "2" ECDSA keys = "3" ED25519 keys = "4" part 5: The algorithm type: SHA-1 = "1" SHA-256 = "2" part 6: You can generate, for example: $ awk '{print $2}' /etc/ssh/ssh_host_dsa_key.pub | \ openssl base64 -d -A | openssl sha1 

Чтобы использовать его, поместите VerifyHostKeyDNS ask в конфигурацию вашего клиента SSH, обычно ~/.ssh/config .

Старые версии ssh-keygen не генерируют все доступные ключи (например, поддержка ecdsa и sha256 не поддерживается). Этот скрипт создает все записи для всех доступных ключей в /etc/ssh/ :

 #!/bin/bash # # Creates SSHFP Records for all available keys # HOST="${1-$(hostname -f)}" if [[ "$1" == "-h" || "$1" == "--help" ]] then echo "Usage: sshfpgen <hostname>" fi if which openssl >/dev/null 2>&1 then if ! which sha1sum >/dev/null 2>&1 then sha1sum() { openssl dgst -sha1 | grep -E -o "[0-9a-f]{40}" } fi if ! which sha256sum >/dev/null 2>&1 then sha256sum() { openssl dgst -sha256 | grep -E -o "[0-9a-f]{64}" } fi fi for pubkey in /etc/ssh/ssh_host_*_key.pub /etc/ssh_host_*_key.pub do case "$(cut -d _ -f3 <<< "$pubkey")" in rsa) echo "$HOST IN SSHFP 1 1 $(cut -f2 -d ' ' "$pubkey" | base64 --decode | sha1sum | cut -f 1 -d ' ')" echo "$HOST IN SSHFP 1 2 $(cut -f2 -d ' ' "$pubkey" | base64 --decode | sha256sum | cut -f 1 -d ' ')" ;; dsa) echo "$HOST IN SSHFP 2 1 $(cut -f2 -d ' ' "$pubkey" | base64 --decode | sha1sum | cut -f 1 -d ' ')" echo "$HOST IN SSHFP 2 2 $(cut -f2 -d ' ' "$pubkey" | base64 --decode | sha256sum | cut -f 1 -d ' ')" ;; ecdsa) echo "$HOST IN SSHFP 3 1 $(cut -f2 -d ' ' "$pubkey" | base64 --decode | sha1sum | cut -f 1 -d ' ')" echo "$HOST IN SSHFP 3 2 $(cut -f2 -d ' ' "$pubkey" | base64 --decode | sha256sum | cut -f 1 -d ' ')" ;; ed25519) echo "$HOST IN SSHFP 4 1 $(cut -f2 -d ' ' "$pubkey" | base64 --decode | sha1sum | cut -f 1 -d ' ')" echo "$HOST IN SSHFP 4 2 $(cut -f2 -d ' ' "$pubkey" | base64 --decode | sha256sum | cut -f 1 -d ' ')" ;; esac done 

Edit: Новая версия с PR от alex-dupuy с поддержкой BSD.

https://github.com/mindfuckup/Scripts/blob/master/sshfpgen

Если вы используете Puppet, facter встроил поддержку sshfp . Плюс, если вы используете PuppetDB, вы можете легко извлечь эту информацию для всех своих хостов.

 facter | grep -i sshfp sshfp_dsa => SSHFP 2 1 e1a3e639d6dbd48d3964ebfb772d2d11f1065682 SSHFP 2 2 4f620ce2bc97d91ae5eff42fba621d65b677ab725f275f56b2abd1303c142b73 sshfp_rsa => SSHFP 1 1 a78351af371faf3f19533c3a4a9e967543d7d2f5 SSHFP 1 2 795943a6ee8b53c818cfef5781209e25a6eb4bc386813db60d3ff2c1569692fc 

Источник

  • Как ssh между контейнерами lxc
  • rsync для удаленного сервера без пароля
  • Как заблокировать свою учетную запись с удаленного входа ssh с паролем?
  • Тайм-аут соединения SSH через пару секунд, когда мой второй интерфейс закрыт
  • Запуск сценария (для графического интерфейса приложения) при регистрации в NX, но ограничение команд оболочки на терминале
  • Включить массивный одновременный SSH на один сервер
  • Как запустить графический интерфейс на моем сервере через SSH?
  • Как получить доступ к серверу без IP-адреса
  • Файл bad known_hosts при подключении к балансируемому домену
  • Блокировать входящий ssh ​​с ответным сообщением
  • CentOs 7 - MobaXterm - X11 Переадресация на одного пользователя
  • Linux и Unix - лучшая ОС в мире.