Eu acredito que você pode usar o sshpass.
- Ubuntu / Debian:
apt-get install sshpass
- Fedora / CentOS:
yum install sshpass
Por exemplo:
sshpass -p "PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no USERNAME@IP
Meu exemplo é que eu preciso copiar minha chave ssh para acesso autorizado em uma máquina remota. Eu preciso ser capaz de chamar um script que copia a minha chave ssh para a máquina remota sem precisar da minha entrada. Atualmente, ele solicita uma senha e também um sim para a impressão digital da RSA. Eu preciso que seja capaz de adicionar automaticamente meus hosts uns aos outros através de um intervalo de IP
Para o prompt de senha ssh, tente usar ansible/ansible-playbook -k/--ask-pass
. Ele irá chamar sshpass
(FYI, talvez o OSX não seja fornecido com sshpass
).
Para verificação da chave do host, adicione
[defaults]
host_key_checking = False
em ~ / .ansible.cfg ou /etc/ansible/ansible.cfg.
Ou export ANSIBLE_HOST_KEY_CHECKING=False
é exatamente como este manual diz.
Para a implantação de chaves ssh, use o módulo authorized_keys no playbook ansible. É mais fácil para o usuário manter a idempotência dos scripts.
Se você estiver certo em inserir a senha uma vez, o script a seguir copiará sua chave ssh para um grande número de hosts (listados em hosts.txt) muito rápido sem precisar colocar sua senha na linha de comando:
# 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=''