Copia a chave pública ssh para múltiplos hosts Linux

10

Eu estou tentando copiar o .ssh / id_rsa.pub do nosso servidor central para vários servidores. Eu tenho o seguinte script que eu costumo usar para enviar alterações para os diferentes servidores.

#!/bin/bash


for ip in $(<IPs); do
    # Tell the remote server to start bash, but since its
    # standard input is not a TTY it will start bash in
    # noninteractive mode.
    ssh -q "$ip" bash <<-'EOF'



EOF

done

Mas, neste caso, preciso catar a chave pública no servidor local e adicioná-la a vários servidores. Existe uma maneira de usar o script de documento acima aqui para executar o seguinte.

cat .ssh/id_rsa.pub |ssh [email protected] 'cat > .ssh/authorized_keys'
    
por user67186 17.07.2014 / 23:38

3 respostas

15

Com esse loop simples, você pode automatizá-lo e se espalhar para todos os servidores remotos.

#!/bin/bash
for ip in 'cat /home/list_of_servers'; do
    ssh-copy-id -i ~/.ssh/id_rsa.pub $ip
done
    
por 17.07.2014 / 23:51
2

Para copiar sua chave pública, você tem algo embutido no próprio openssh. Então, ao invés de cat e ssh , use isto: -

ssh-copy-id -i ~/.ssh/id_rsa.pub YOUR-REMOTE-HOST
    
por 17.07.2014 / 23:44
0

A resposta aceita não funcionará se for necessário colocar a chave pública de outra pessoa em várias máquinas. Então, eu criei a seguinte solução:

cat add-vassal-tc-agents.sh

#!/bin/bash
set -x # enable bash debug mode
if [ -s vassal-public-key.pub ]; then # if file exists and not empty
    for ip in 'cat tc-agents-list.txt'; do # for each line from the file
        # add EOL to the end of the file and echo it into ssh, where it is added to the authorized_keys
        sed -e '$s/$/\n/' -s vassal-public-key.pub | ssh $ip 'cat >> ~/.ssh/authorized_keys'
    done
else
    echo "Put new vassal public key into ./vassal-public-key.pub to add it to tc-agents-list.txt hosts"
fi

Esse script adiciona a nova chave aos usuários na lista de máquinas, desde que o ambiente em que ela é executada tenha acesso.

Exemplo de tc-agents-list.txt :

[email protected]
[email protected]
[email protected]
[email protected]
    
por 27.07.2018 / 13:55