Как безопасно добавить список хостов в файл known_hosts - PullRequest
0 голосов
/ 22 мая 2018

У меня есть файл, содержащий ~ 1000 хостов, по одному хосту на строку.Для каждого хоста я хочу проверить, существует ли запись для хоста в файле known_hosts.Если это не так, я хочу добавить хост в файл known_hosts.В противном случае я хочу обновить существующую запись.Я хотел бы использовать параметр -H для хеширования всех записей в known_hosts.Я уже выполнил команду ssh-keygen -H ~/.ssh/known_hosts для хеширования существующих записей.

Вот простой цикл, который я собрал:

while read LINE; do
    # Remove entry if it exists
    ssh-keygen -R $LINE
    # Append new hashed key to file
    ssh-keyscan -H $LINE >> ~/.ssh/known_hosts
done < $HOST_FILE

Безопасен ли этот метод?Если нет, каков рекомендуемый способ сделать это?Причина, по которой я это делаю, состоит в том, чтобы отключить ввод «да» 1000 раз, чтобы разрешить добавление каждого нового хоста в known_hosts для сценариев.

1 Ответ

0 голосов
/ 23 мая 2018

Что здесь интерактивного?Вы отправляете данные в свой цикл while, и ни одна из команд в цикле не требует взаимодействия с пользователем.Я считаю это безопасным.

Примечание: ssh-keyscan отбрасывает комментарии к стандартной ошибке, и вы можете отфильтровать их.Вам, вероятно, также не нужны ошибки от ssh-keygen, когда запрошенный хост отсутствует:

while read LINE; do
    # Remove entry if it exists
    ssh-keygen -R "$LINE" 2>/dev/null
    # Append new hashed key to file
    ssh-keyscan -H "$LINE" >> ~/.ssh/known_hosts 2>/dev/null
done < "$HOST_FILE"

Возможно, вас также заинтересует ssh-hosthashes , скрипт, который янекоторое время назад написал, что ищет дублирующиеся записи в known_hosts файлах.Он находит дубликаты по открытым ключам, поэтому он будет кластеризовать записи независимо от того, перечислены ли они по IP, имени или хешу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...