Se o seu ssh-copy-id
não suportar a opção StrictHostKeyChecking, você pode escrever um script que:
- Execute
ssh-keyscan
no servidor de destino para obter a chave pública - Anexar ao arquivo known_hosts
- Executar
ssh-copy-id
A primeira vez em que ssh-copy-id
perguntará
# ssh-copy-id -i .ssh/id_dsa.pub [email protected]
The authenticity of host 'example.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is 39:fb:5e:70:30:33:2b:18:17:e9:4f:2f:91:b5:d2:21.
Are you sure you want to continue connecting (yes/no)?
É possível fazer script disso, então o script simplesmente responderá sim?
O SSH tem uma opção para adicionar automaticamente qualquer chave de host ao arquivo de hosts confiáveis:
ssh-copy-id -i .ssh/id_dsa.pub -o StrictHostKeyChecking=no [email protected]
Como alternativa, você pode fazer o seguinte:
echo "yes \n" | ssh-copy-id -i .ssh/id_dsa.pub [email protected]
Editar : como parece que essas soluções não funcionam com ssh-copy-id
, você sempre pode criar um arquivo ~/.ssh/config
com a seguinte opção:
StrictHostKeyChecking no
Isso deve funcionar com todas as conexões SSH, independentemente de elas serem invocadas por meio de um script ou não.
Tente isto:
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] -y
ele não adiciona as chaves do host ao arquivo known_hosts, mas permite copiar (ou anexar) a chave pública para o authorized_keys
que você deseja, se esse for o único propósito aqui.