Eu posso pensar em duas maneiras verdadeiramente sem chave e sem senha, você pode fazer isso, embora ambos sejam sub-ótimos. Após a quebra de seção, mostrarei como isso é fácil com as chaves SSH.
Método 1: NFS ou algo parecido. Um sistema de arquivos comum permitiria que você despejasse arquivos em áreas dedicadas e, em seguida, os pegasse em tarefas cron dos sistemas relevantes. Isso é, no entanto, tão seguro quanto o seu sistema de arquivos de rede.
Método 2: RLOGIN. O SSH herda muito do RSH, o que permite que um usuário com o mesmo nome de usuário e senha (e sal?) Em diferentes sistemas se conecte diretamente a eles, sem necessidade de senha (basicamente, o hash de /etc/shadow
é usado como prova). Não tenho certeza se o SSH pode fazer isso facilmente, e infelizmente não conheço nenhum guia sobre como configurar isso.
Para segurança adequada, você precisará de uma chave privada em cada servidor. Eu vejo nos comentários que você não quer manter tudo isso, mas isso é inevitável. Gerar e jogar fora chaves privadas deve ser fácil de fazer, assim como adicioná-las como authorized_keys
nos sistemas que elas precisam para conceder acesso.
Mesmo se estamos falando de uma centena de sistemas, a geração de chaves pode ser roteirizada dessa maneira a partir do seu sistema pessoal (isso pressupõe que você já tenha acesso root do seu sistema pessoal):
cd /tmp
mkdir .ssh
chmod 700 .ssh
for server in node{1..100}; do
echo "Generating key for $server..."
ssh-keygen -t rsa -b 4096 -C "root@$server" -k .ssh/id_rsa
cat .ssh/id_rsa.pub >> authorized_keys
scp -pr .ssh root@$server:
rm .ssh/id_rsa*
sleep 1
done
for server in node{1..100}; do
cat authorized_keys |ssh root@$server "cat >> .ssh/authorized_keys"
done
Eu usei sleep 1
porque todas essas chaves estão sendo geradas no mesmo sistema; Esta é uma verificação de sanidade para garantir que você obtenha mais aleatoriedade. Dois loops foram necessários porque precisamos de cada pubkey antes de podermos compartilhar a lista de chaves autorizadas.
Lá, agora você tem uma centena de servidores, denominados node1 a node100, cada um com uma chave concedendo acesso root para raiz em outro servidor.
(Nota: não defendo permitir que os usuários efetuem login como root. A ferramenta sudo
permite um controle e uma responsabilidade muito melhores. Para que o script acima funcione, você deve adicionar seu pubkey ao root authorized_keys em cada nó, senão você precisaria do sudo NOPASSWD
access e algumas revisões do meu código (por exemplo, scp -pr .ssh $server:/tmp && ssh $server "sudo chown root:root /tmp/.ssh && sudo mv /tmp/.ssh /root/"
).