Faça login em vários servidores e execute um comando com a frase secreta

0

A senha já foi configurada e agora quero fazer login em vários servidores e executar um comando em todos os servidores. Eu tentei isso

#! /bin/bash
for HOST in $(cat servers.txt ) ; do
ssh -o $HOST "uname -a" PreferredAuthentications=keyboard-interactive,password -o PubkeyAuthentication=no
done

mas isso não ajuda.

    
por user3773374 06.10.2015 / 09:45

1 resposta

1

Eu tentaria ordem canônica

ssh -o PubkeyAuthentication=no \
    -o PreferredAuthentications=keyboard-interactive,password \
     $HOST "uname -a"  

usando seu comando, o ssh interpretará PreferredAuthentications=keyboard-interactive,password -o PubkeyAuthentication=no como argumento a ser enviado ao host remoto.

Para usar o ssh para se conectar a um host remoto, são usadas 3 soluções principais.

1) senha do controle remoto

simples e óbvio, você digita a senha do host remoto a cada vez.
Prós: sem configuração
Contras: senha a ser inserida a cada vez

2) senha menos par de chaves

você deve gerar um par de chave privada / pública sem senha, implantar chave pública na conta remota.
Prós: sem senha para entrar no
Contras: chave pode ser roubada

3) par de chaves protegidas por senha

você deve gerar um par de chave privada / pública com uma senha, implantar chave pública na conta remota. Você pode carregar a chave na memória ( ssh-agent ) ou digitar a senha toda vez.
Prós: chave não pode ser roubada
Contras: senha a ser inserida ou carregar / descarregar

Não consegui encontrar o tipo de conexão que você usa. Suponho que no " ssha host " do seu comentário "a" seja um erro de digitação. Desde que você está usando a palavra "Passphrase", eu assumi que você definiu uma senha na chave privada, como é a expressão usada.

meu próximo palpite é que você tente

ssh $HOST uname -a
    
por 06.10.2015 / 09:53