Comando SCP e / ou SSH com senha na linha

2

Primeiro, estou TENTANDO usar as chaves rsa porque estou usando o script para criar chaves RSA, mas inicialmente tenho que conectar-me à máquina remota para passar a chave de autenticação recém-gerada. Ter chaves premade é o que estou fazendo, mas gostaria de uma maneira mais fácil de obter a chave para todas essas máquinas.

Então, eis o seguinte: preciso conectar-me a mais de 100 máquinas e passar por cima de um arquivo de chave pública, além de definir permissões e ativar a autenticação por chave. Agora eu posso fazer isso em 2 linhas: um comando scp para transferir e um comando ssh para definir permissões e ativar a autenticação chave novamente. Mas como está, está pedindo a senha duas vezes, para cada máquina. Com mais de 100 máquinas precisando dessas chaves para que eu nunca precise fazer a senha novamente, não quero digitar essa senha 200 vezes.

Eu preciso de alguma maneira para inserir a senha durante a conexão, só desta vez (bem duas vezes tecnicamente). Eu estava esperando a capacidade de armazenar a senha em uma variável enquanto o script era executado e depois terminar com ela depois que as conexões fossem feitas e a chave pública fosse transferida para todas essas máquinas.

Pensamentos?

Editar: esqueci de mencionar, não consigo instalar nada. Então não posso usar esperar.

    
por Kraden 02.11.2012 / 18:26

1 resposta

3

Você não precisa fazer duas conexões para fazer o que está fazendo. Assumindo que ssh-copy-id não funcionará para você, aqui está algo de um script que escrevi há muito tempo (antes de saber sobre ssh-copy-id) que faz isso em um ssh:

tar c $keys | ssh "$1" "set -e; cd \'mktemp -d\'; tar x; mkdir -p ~/.ssh; chmod go-w ~/.ssh; cat $keys >> ~/.ssh/authorized_keys; chmod go-w ~/.ssh/authorized_keys"

Sim, essa é uma linha enorme. $keys contém os nomes de todas as chaves públicas (lembre-se, este é um script antigo):

keys=''
for k in identity.pub id_rsa.pub id_dsa.pub; do
        [ -e ~/.ssh/$k ] && keys="$keys $k"
done

O principal é que o ssh é um transporte seguro para binário, então você pode usá-lo para transferir tar para colocar seus arquivos na mesma sessão que está executando o seu chmod, etc.

    
por 02.11.2012 / 18:35