Конфигурационный файл SSH ограничен 100 идентификационными файлами - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужно подключиться к более чем 100 машинам через SSH.Я сделал скрипт, чтобы сделать все соединения и выполнить необходимые изменения.Проблема в том, что я не могу вводить пароль каждый раз, когда выполняю скрипт для каждой из удаленных машин.Затем я обнаружил, что могу создать файл в каталоге /root/.ssh/ с именем config, где я могу хранить строки следующим образом:

IdentityFile /root/.ssh/id_rsa_XXXX

Пара ключей также сохраняется в /root/.ssh/, нопроблема в том, что существует ограничение в 100 файлов идентификации, которые я могу записать в файл config.

Знаете ли вы, есть ли обходной путь, чтобы сделать это возможным?

Спасибо всем, первый вопрос здесь!:)

Ответы [ 2 ]

2 голосов
/ 20 сентября 2019

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

Если вы пытаетесь загрузить все ключи в ssh одновременно, вы делаете это также неправильно.Конфигурация ssh имеет ключевое слово Host, которое может быть использовано для фильтрации того, какой ключ предполагается использовать на каком сервере.И я советую вам использовать его.В противном случае ssh не будет знать, какой ключ использовать для какого сервера, а также преодолеет ограничение.

1 голос
/ 20 сентября 2019

У вас есть отдельные ключи ssh для каждого сервера?Вы можете связать их (один ключ для каждого типа / функции сервера).Тогда вам не нужно будет указывать каждый из них в файле конфигурации.

Другим способом является вызов ключа из командной строки вместо файла конфигурации, например:

ssh -i /root/.ssh/id_rsa_XXX -l user.name server.example.com

Если вы сделаете это осторожно, вы можете создать /root/.ssh/hostname, где hostname - это фактическое имя хоста сервера, к которому вы хотите подключиться.Например:

/root/.ssh/server.example.com

Затем можно выполнить сценарий (BASH) следующим образом (при условии, что вы вызываете сценарий dossh.sh):

key_and_hostname=$1
ssh -i /root/.ssh/${key_and_hostname} -l user.name ${key_and_hostname}

вызвать сценарий следующим образом:

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