ssh-keyscan это утилита для сбора публичных ssh-ключей машин с ряда компьютеров. Это сделано в целях оказания помощи при формировании и проверке файлов ssh_known_hosts. ssh-keyscan обеспечивает минимальный интерфейс, подходящий для использования оболочки и сценариев perl.
ssh-keyscan использует не блокируемое подключение ввода/вывода для создания параллельных сеансов связи с таким количеством компьютеров, насколько это возможно. Так что это очень эффективный инструмент. Ключи из домена с 1000 машин могут быть собраны в считанные секунды, даже если некоторые из этих компьютеров выключены или на них не работает ssh. Вы не нуждаетесь во входе в систему на машинах, которые вы сканируете, и при этом процесс просмотра не требует ни какого шифрования.
Распознаются следующие опции:
-pport
Целевой порт для подключения на удалённой машине.
-Ttimeout
Устанавливает время ожидания для попытки установить соединение. Если timeout секунд с момента начала соединения с машиной или момента получения любой информации с данной машины истёк, соединение завершается и машина считается недоступной. Значение по умолчанию 5 секунд.
-ttype
Указывает тип запрашиваемого со сканируемой машины ключа. Допустимыми значениями будут: "rsa1", для протокола версии 1, и "rsa" или "dsa", для протокола версии 2. Могут быть заданы множественные значения, разделённые через запятую. Значением по умолчанию является "rsa1".
-ffilename
Считывает машины или пары addrlist namelist из указанного файла, по одной на строку. Если вместо имени файла стоит -, то ssh-keyscan будет считывать машины или пары addrlist namelist со стандартного ввода.
-v
Режим отладки. Принуждает ssh-keyscan выводить отладочную информацию о проделываемой работе.
-4
Принуждает ssh-keyscan использовать только IPv4-адреса.
-6
Принуждает ssh-keyscan использовать только IPv6-адреса.
БЕЗОПАСНОСТЬ
Если файл ssh_known_hosts создаётся с использованием ssh-keyscan без проверки ключей, то пользователи будут уязвимы для атак. С другой стороны, если модель безопасности допускает такой риск, ssh-keyscan позволит распознать поддельные файлы ключей или атаки по принципу man-in-the-middle после того как был создан файл ssh_known_hosts.
ПРИМЕРЫ
Распечатать rsa1-ключ машины для компьютера hostname:
$ ssh-keyscan hostname
Найти все машины из файла ssh_hosts, содержащие новые или отличающиеся ключи от ключей в упорядоченном файле ssh_known_hosts:
Выходной формат для rsa1-ключей:
host-or-namelist bits exponent modulus
Выходной формат для rsa- и dsa-ключей:
host-or-namelist keytype base64-encoded-key
Где keytype является "ssh-rsa" или "ssh-dsa".
/etc/openssh/ssh_known_hosts
ОШИБКИ
Вызывает появление сообщения "Connection closed by remote host" (Соединение завершено удаленным компьютером) на консолях всех просматриваемых машин под управлением сервера версии старшей 2.9. Это происходит потому, что осуществляется подключение на порт ssh, чтение публичного ключа и сброс соединения сразу, как только получен ключ.