Envie a senha através de stdin em 'ssh-copy-id'

8

Eu preciso automatizar algumas implantações de identidade, de preferência usando ssh-copy-id .

Estou tentando fornecer a senha por stdin, o que é possível em ssh usando o sinalizador -S . Estou ciente de que posso enviar opções adicionais para ssh usando o -o flag no comando ssh-copy-id , mas não há exemplos de uso desse sinalizador na página man.

Então eu tentei passar a senha SSH para ssh-copy-id através de stdin usando:

$# echo $TMP_PASS | ssh-copy-id -p2222 -i key.pub user@host -o "-S"

Mas tudo que eu obtenho é:

/bin/ssh-copy-id: ERROR: command-line: line 0: Bad configuration option: -s

EDITAR:

I'm trying to provide the password through stdin, which is possible on ssh by using the -S flag.

Esta afirmação está errada. Eu realmente li esse sinalizador de sudo man;

    
por csguimaraes 16.09.2015 / 16:46

2 respostas

11

Você pode querer tentar instalar o sshpass e alterar sua chamada para ssh-copy-id :

sshpass -p "$TMP_PASS" ssh-copy-id
    
por 16.09.2015 / 16:53
2

Onde você encontrou as informações sobre a opção -S ? Faz algo completamente diferente! Ele é usado para multiplexação e ControlPath.

O SSH não aceita senhas no stdin ever , portanto, você deve pré-instalar chaves autorizadas em sua implantação (de preferência) ou usar o script sshpass ou expect , conforme descrito em muitas outras perguntas .

    
por 16.09.2015 / 17:04