
Para não digitar senha ao fazer qualquer coisa em qualquer um desses servidores, preciso fazer upload do meu certificado ssh para o controle remoto:
ssh-copy-id CptBartender@remote
Agora... preciso fazer upload desse certificado para mais de 400 servidores e estou tentando encontrar uma maneira de não digitar/colar minha senha tantas vezes.
A pergunta é: como posso automatizar isso no Windows (com MinGW)? Provavelmente o Cygwin não é uma opção porque parece estar por trás do grande firewall corporativo do inferno.
Até agora eu:
- criei um script que iteraria em todos os controles remotos, mas pede senha para cada um deles
- tentei passar a senha sem
yes
sucesso - li sobre
expect
, mas não consegui encontrar uma maneira de fazê-lo funcionar no MinGW - leia sobre
sshpass
- o mesmo queexpect
Já pensei em AutoIt
fazer isso, mas deve haver uma maneira melhor ...
Responder1
Os PuTTY plink
podem aceitar a senha como um parâmetro de linha de comando. Ele não possui um equivalente direto a ssh-copy-id
, mas pode ser facilmente programado, por exemplo, executando os comandos manualmente ...
plink foo@bar -pw baz "mkdir -p ~/.ssh && echo 'ssh-ed25519 AAAA...' >> ~/.ssh/authorized_keys"
...ou enviando o arquivo com a extensão pscp
.
Além disso, se expect
não funcionar no Windows, certamente você poderia executá-lo em um desses 400 servidores Linux?
(Além disso, dados os números, talvez você deva extrair as chaves do LDAP ou usar AD/Kerberos? Versões recentes do OpenSSH têm ganchos para integração LDAP sem precisar mais de patches de terceiros.)
Responder2
Você pode procurar a ferramenta Putty plink conforme mencionado acima. Ou você pode pensar em usar um dos sistemas de gerenciamento de configuração, como Puppet, Ansible ou Chef no futuro. Você pode usar qualquer um deles para adicionar algum certificado a todos os seus servidores rapidamente.
Procurando pelos números do seu servidor, acho que você precisa pensar seriamente sobre isso. Eles podem ser usados para a maioria das tarefas rotineiras de administração de servidores, incluindo gerenciamento de usuários, gerenciamento de arquivos e diretórios e software.