J'essaie de copier .ssh / id_rsa.pub de notre serveur central vers plusieurs serveurs. J'ai le script suivant que j'utilise habituellement pour pousser les modifications sur les différents serveurs.
#!/bin/bash
for ip in $(<IPs); do
# Tell the remote server to start bash, but since its
# standard input is not a TTY it will start bash in
# noninteractive mode.
ssh -q "$ip" bash <<-'EOF'
EOF
done
Mais dans ce cas, je dois cat la clé publique sur le serveur local, puis l'ajouter à plusieurs serveurs. Existe-t-il un moyen d'utiliser le script de document ci-dessus pour exécuter ce qui suit.
cat .ssh/id_rsa.pub |ssh tony@0.0.0.0 'cat > .ssh/authorized_keys'
shell-script
ssh
user67186
la source
la source
Réponses:
Avec cette boucle simple, vous pouvez l'automatiser et la diffuser sur tous les serveurs distants.
la source
Voici mon script simple pour copier ssh-keygen sur plusieurs serveurs sans demander de mot de passe à chaque fois.
la source
La réponse acceptée ne fonctionnera pas si l'on doit mettre la clé publique de quelqu'un d'autre sur plusieurs machines. J'ai donc trouvé la solution suivante:
cat add-vassal-tc-agents.sh
Ce script ajoute la nouvelle clé aux utilisateurs de la liste des machines, à condition que l'environnement sur lequel il est exécuté ait accès.
Exemple de
tc-agents-list.txt
:la source
Pour copier votre clé publique, vous disposez d'un élément intégré à openssh lui-même. Donc au lieu de
cat
etssh
utilisez ceci: -la source
Vous pouvez le faire avec une simple liste de serveurs en boucle while et intégrée comme ceci:
Le fait d'avoir la liste à l'intérieur du script supprime les fichiers de données séparés qui peuvent être mal placés.
la source
ssh-copy-id
a déjà été suggéré dans d'autres réponses.En supposant que vous ayez un fichier avec la liste IP des serveurs, nommez SERVER et que seules les adresses IP des serveurs sont définies.
Cette pour boucle fonctionnera aussi bien.
la source