Мой пример использования - мне нужно скопировать мой ключ ssh для авторизованного доступа на удаленную машину. Мне нужно иметь возможность вызывать сценарий, который копирует мой ключ ssh на удаленную машину без необходимости ввода. В настоящее время он запрашивает пароль, а также да к отпечатку пальца RSA. Мне нужно, чтобы иметь возможность автоматически добавлять мои хосты друг к другу через диапазон IP
3 ответа
Я считаю, что вы можете использовать sshpass.
- Ubuntu/Debian:
apt-get install sshpass
- Fedora/CentOS:
yum install sshpass
Например:
sshpass -p "PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no USERNAME@IP
Если вы можете ввести пароль один раз, следующий скрипт очень быстро скопирует ваш ключ ssh на большое количество хостов (перечисленных в hosts.txt), не вводя пароль в командной строке:
# sudo yum install moreutils sshpass openssh-clients
echo 'Input Password:';
read -s SSHPASS;
export SSHPASS;
parallel -i -j 25 sshpass -e ssh-copy-id '-o ConnectTimeout=10 -o StrictHostKeyChecking=no {}' -- `cat hosts.txt`;
export SSHPASS=''
Для запроса пароля ssh попробуйте использовать ansible/ansible-playbook -k/--ask-pass
. Он будет вызывать sshpass
(к вашему сведению, может быть, OSX не поставляется с sshpass
).
Для проверки ключа хоста добавьте
[defaults]
host_key_checking = False
в ~/.ansible.cfg или /etc/ansible/ansible.cfg.
Или export ANSIBLE_HOST_KEY_CHECKING=False
как написано в этом руководстве .
Для ключей SSH развертывания используйте authorized_keys модуль в анзибле пьес. Пользователю проще поддерживать скрипты идемпотентности.