Copie minha chave ssh para a máquina remota via ssh-copy-id em um script sem prompt?

5

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

    
por Aamir Mushtaq 30.04.2015 / 13:02

3 respostas

10

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

    
por 30.04.2015 / 19:15
0

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.

    
por 25.06.2015 / 04:04
0

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=''
    
por 11.09.2016 / 16:57