ssh cópia de chave pública

0

Esta pergunta está se repetindo no Stack Overflow porque não obtenho resposta de lá.

Estou tentando criar um script simples que importará a chave pública para outros servidores.

Eu fiz duas opções que você pode escolher. Uma está usando ssh-copy-id, e a outra é simples, copie a chave do pub para o arquivo no outro servidor. O segundo funciona bem, mas não consigo fazer isso funcionar com o ssh-copy-id. Isso é o que eu tenho agora:

ssh-copy-id -i $var1 $i

Onde $ var1 é "/path/to/the/public_key.pub" e $ i é os servidores onde eles são escritos em um arquivo txt. A idéia é que eu tenho minhas chaves de pub em todos os lugares e eu gosto de entrar na chave do pub de um novo cara de admin em todos os lugares. E funciona bem, mas quando eu executo eu tenho que digitar minha senha. Qualquer solução para fazer isso com uma vez digitando a senha. E também gosto de entrar em nova linha antes de adicionar a chave. Mas eu não consigo encontrar solução como fazer isso com ssh-copy-id

    
por user3523605 29.07.2014 / 21:39

2 respostas

2

A solução é essa.

1) No seu terminal, crie um array com todos os hosts / endereços IP que você deseja copiar o id_rsa.pub. Por exemplo

hosts=( host1 host2 192.168.100.200 host4 )

2) Crie o arquivo esperado salve-o e torne-o executável usando chmod +x filename

#!/usr/bin/expect -f

if { $argc != 4 } {
    puts stderr "usage: ./expt host pass user keyfile"
    exit 2
}

   set host [lindex $argv 0]
   set pass [lindex $argv 1]
   set user [lindex $argv 2]
   set keyfile [lindex $argv 3]

   spawn ssh-copy-id -i $keyfile $user@$host
   expect "assword:"
   send "$pass\n"
   expect eof

3) Agora percorra a matriz que contém seus hosts e envie o id_rsa.pub

for host in "${hosts[@]}" ; do ./expt "$host" Y0urPassword username ~/.ssh/id_rsa.pub ; done

Aguarde até que a chave pública seja copiada para todos os hosts.

    
por 29.07.2014 / 22:34
0

Ok, finalmente eu tenho isso. Agora trabalhe perfeito. No script após o loop for e adiciono esta linha:

/usr/bin/expect <<EOD

e o conde do procedimento esperar como:

spawn ssh-copy-id -i test.pub root@<name_host>
        expect "Enter passphrase for key"
        send "$pass\n"
        expect eof
EOD

e funciona perfeito!

Obrigado novamente por explicar e ajudar val0x00ff

;)

    
por 10.08.2014 / 15:51

Tags