ssh-copy-id sem senha para o usuário 'postgres'

1

Eu tenho N hosts onde posso fazer login sem senha via ssh para o usuário root .

Para essas máquinas, gosto de adicionar uma chave ssh-pub a authorized_keys do usuário postgres .

Objetivo: também quero login sem senha para o usuário postgres .

AFAIK a ferramenta ssh-copy-id não ajuda aqui, pois eu quero que a ação "adicione ssh-pub-key ao usuário postgres" seja sem senha.

Como resolver isso?

    
por guettli 06.06.2016 / 16:20

3 respostas

0

Bem, se você puder fazer o login sem senha como root, você pode fazer algo assim, eu acho:

scp pub_key root@<host>:
ssh root@<host> 'mkdir -p ~postgres/.ssh; cat pub_key >> ~postgres/.ssh/authorized_keys; chown -R postgres.postgres ~postgres/.ssh; chmod 644 ~postgres/.ssh/authorized_keys; chmod 700 ~postgres/.ssh; rm -f pub_key'

que copia primeiro a chave pública (novamente) para o host remoto, depois adiciona esse arquivo às authorized_keys do usuário postgres e garante que ele tenha as permissões corretas. Ele também fará com que o diretório postgres / .ssh exista e tenha a propriedade / permissões corretas

    
por 06.06.2016 / 16:49
0

Existem muitas maneiras semelhantes para (fazer) isso:

ssh root@SomeHost 'tar cpBf - .ssh/authorized_keys | sudo -iu postgres tar xpBf -'

Na verdade, este mesmo comando copia as chaves autorizadas do root para o usuário do postgres, mas geralmente não há problema com isso, pois o acesso do root é sempre superior e significa que qualquer pessoa com acesso ao root pode acessar a conta do postgres.

    
por 06.06.2016 / 16:50
0

Você pode fazer algo como:

for f in list_of_servers; do ssh root@${f} "mkdir -p ~postgres/.ssh; echo $KEY >> ~postgres/.ssh/authorized_keys; chown -R postgres:postgres ~postgres/.ssh; chmod 400 ~postgres/.ssh/authorized_keys; chmod 700 ~postgres/.ssh"; done

ou se você tiver essas máquinas em automação usando algo como Puppet ou Salt, isso seria trivial.

    
por 06.06.2016 / 16:47

Tags