Я считаю, что вы можете использовать sshpass.
- Ubuntu / Debian:
apt-get install sshpass
- Fedora / CentOS:
yum install sshpass
Например:
sshpass -p "PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no USERNAME@IP
Мой пример использования - мне нужно скопировать мой ключ ssh для авторизованного доступа на удаленную машину. Мне нужно иметь возможность вызывать скрипт, который копирует мой ключ ssh на удаленную машину без необходимости ввода. В настоящее время он запрашивает пароль, а также да к отпечатку пальца RSA. Мне нужно, чтобы иметь возможность автоматически добавлять мои хосты друг к другу через диапазон IP
Я считаю, что вы можете использовать sshpass.
apt-get install sshpass
yum install sshpass
Например:
sshpass -p "PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no USERNAME@IP
For ssh password prompt, try to use ansible/ansible-playbook -k/--ask-pass
. It will call sshpass
(FYI, maybe OSX don't ship with sshpass
).
For host key checking, add
[defaults] host_key_checking = False
in ~/.ansible.cfg or /etc/ansible/ansible.cfg.
Or export ANSIBLE_HOST_KEY_CHECKING=False
just like this manual says.
For ssh keys deploy, use authorized_keys module in ansible playbook. It's easier for user to keep the scripts idempotency.
Если вы можете ввести пароль один раз, следующий скрипт очень быстро скопирует ваш ключ 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=''