Encontrei um problema sobre como obter login sem senha entre dois nós em um cluster de servidores. Agora tenho um cluster de servidores composto por 10 nós com os seguintes endereços IP:
192.168.0.1 # node1
192.168.0.2 # node2
...
192.168.0.10 # node10
Meu nome de usuário nesses três nós é todos xyz
e o sistema nesses nós é todos Ubuntu14.04
.
Esta parece ser uma pergunta canônica e deveria ter sido respondida em muitos lugares, mas minha pesquisa no Google só me indica a solução para dois nós. Por exemplo, passe a chave pública gerada node1
para o authorized_keys
arquivo node2, ..., node10
para permitir login sem senha node1
nos demais nós. Mas como escalar esse método para quaisquer dois nós em um cluster de servidores? devemos gerar manualmente a chave pública em cada nó e copiar a chave pública de cada nó para os demais nós? Existe um método geral e conveniente?
Responder1
Se você tiver uma configuração de cluster, provavelmente terá um sistema de arquivos compartilhado. Nesse caso, você pode simplesmente adicionar a chave SSH ao próprio servidor. Se conectar-se a outro servidor encontrará sua própria chave na lista de chaves autorizadas. Então você pode se conectar de qualquer servidor a qualquer servidor.
Caso eles tenham sistemas de arquivos diferentes, você precisará fazer isso manualmente. Você pode criar uma nova chave SSH para o xyz
usuário e ssh-copy-id
para cada um dos outros servidores. Isso escala como N² com o número de servidores, isso não é legal.
Você pode gerar uma chave SSH e copiá-la para todas as máquinas para /home/xyz/.ssh/id_rsa
e id_rsa.pub
. Em seguida, registre esta chave em toda a máquina. Agora você pode fazer login de qualquer servidor em qualquer outro servidor usando a mesma chave SSH.
Para implantar isso, eu escreveria um script rápido que usa scp
um for
-loop para iterar pelos servidores.