Скрипт из этой заметки позволит вам раскидать SSH-ключ по списку серверов, чтобы не вводить ssh-copy-id для каждого сервера вручную. А как создать SSH-ключ вы можете узнать в заметке Как клонировать Git репозиторий через SSH, пункт “Приступаем к созданию SSH ключей”.

Создадим список всех серверов в файле:

$ nano server.list
192.168.0.100
192.168.0.101
...

Установим sshpass чтобы постоянно руками не вводить пароль:

# apt-get install sshpass

Маленький скрипт, который будет раскидывать ключи:

$ nano script.sh
#!/bin/bash
while read -r line
do
    echo "running $line"
    sshpass -p <пароль> ssh-copy-id <имя_пользователя>@$line -o "StrictHostKeyChecking no"
done < "server.list"

Запускам скрипт:

$ sh script.sh

И получаем следующий вывод скрипта:

running 192.168.0.100
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

Number of key(s) added: 1
running 192.168.0.101
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

Number of key(s) added: 1

От DevOps

DevOps or not...