Bug #11341
propager et creer automatiquement les clefs SSH pour les backups
50%
Description
On devrait pas avoir à faire d'intervention manuelle à la création d'un serveur pour la création des backups.
Présentement, il faut créer la clef SSH root:
sudo ssh-keygen < /dev/null
.. puis la transférer sur le serveur, en la mettant dans nodes.pp. Puis il faut vérifier l'identité du serveur de backup (ceci devrait se faire automatiquement par la propagation des clefs SSH publiques des serveurs par Puppet).
C'est la partie de copier la clef vers le serveur de backup qui est compliquée, parce que ça prend un "fact" ruby pour lire /root/.ssh/id_rsa.pub...
Historique
#1 Mis à jour par Gabriel Filion il y a plus de 12 ans
- Statut changé de New à Need more info
je suis d'accord que notre procédure actuelle est fastidieuse.
mais en mettant ça sur pied il faudrait faire attention aux implications sur la sécurité qui viennent avec la génération et la distribution automatisées de paires de clefs SSH.
par exemple, si on a un fact qui lit la clef publique sur le serveur et qui l'installe automagiquement sur alexandrie, suffit de changer ce fichier et pouf on a accès au compte sur alexandrie. (bon... vous me direz que ça prend accès à root sur la machine en premier pour faire ça...)
#2 Mis à jour par Antoine Beaupré il y a plus de 12 ans
- Statut changé de Need more info à New
oui, ça prend root. et de plus, root a accès à ce compte déjà sur alexandrie, avec notre système actuel, c'est juste que c'est pas automatisé.
exemple, mettons sur ceres:
# ssh backup-ceres@backup.koumbit.net $ <- yay je suis sur alexandrie
je vois pas le problème d'automatiser ça: quelle info tu avais besoin de plus exactement?
#3 Mis à jour par Gabriel Filion il y a plus de 12 ans
hmm t'as raison que ça change pas vraiment grand chose par rapport à ce qui est déjà en place..
#4 Mis à jour par Antoine Beaupré il y a environ 11 ans
from the aegirvps_deployment module:
exec {"aegirvps_id_rsa":
command => "ssh-keygen -t rsa -N '' -C '${aegirvps_deployment::client_prefix}${aegirvps_deployment::client_id}' -f /root/.ssh/aegirvps_id_rsa",
path => ["/usr/bin", "/usr/sbin"],
creates => ["/root/.ssh/aegirvps_id_rsa", "/root/.ssh/aegirvps_id_rsa.pub"],
}
no exported fact just yet... hmm...
#5 Mis à jour par Antoine Beaupré il y a environ 11 ans
this file should also should be inspiration:
sshd/lib/facter/sshkeys.rb
#6 Mis à jour par Antoine Beaupré il y a presque 11 ans
- Statut changé de New à In progress
- % réalisé changé de 0 à 50
il reste à créer les clés automatiquement, désormais. un fact est maintenant disponible dans puppet pour ça. ça marche pas avec "facter -p", mais ça devrait marcher dans les manifestes. exemple, sur shell:
anarcat@shell:~$ sudo RUBYLIB=/var/lib/puppet/lib/ facter ssh_keys_users
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.
Could not retrieve fact='netmask', resolution='<anonymous>': undefined method `kernel' for Facter:Module
ssh_keys_users => {"root"=>["AAAAB3NzaC1kc3MAAACBAL5epZli3PWXijsb0ChOD41dTjPmwg62/pShSlh417gvClFkfc4kjLdb/ZI+ocmiWfqtwGtqH5UjgmudTb0BlFnMN5nEG08N6fJI0bp91cMYoQuGsBvWI13LiQGrVMoqtCXYxoRRHKpQkkW+j0jnqgC3bab70AvMr336eezhFSORAAAAFQDrrhEiY+4db7cpXQVdKnkFKcQvZwAAAIAwNm2/PqoXMJfXxLJ+uw/Y8GWd1QQ0jmOM5VPrgLlN+Cjt78GxgmqAogDfdnHG0o+rlixMTzwAD1ZLjKAPm10NLt+pwHZsVQ16T7ENfRJf/qz44+4XLcX2QpunU5GA/vhJsRjfmQK74VqoyfnS0yWHu5iOoRf7xNyL4KhTgni+ogAAAIEAnh0AmS2eYKqeLgcNyJ06AvsBq/5YReiDjGI8wma/tJSiijPH6bTYJI3/V4Cj3v/2cikTkI/Jfl5buVLqG6oy3k6clsetdbWCxwEecFJPPs0PWq2LxXu48ZVjZcHYit22KAkQXoXkjI2pPkDPa9v0uhNvZut1bfTRzvYDNPfCUT8="], "gbeaulieu"=>["AAAAB3NzaC1yc2EAAAADAQABAAABAQD2k8+kgYmv51+HS09kbx/xMmYnOgfsEH5Fd9Yf7vu82yYmiMhgoXlN3q+KTFDqQnrHzn5aj4q+KhY49nktZtMkkc/g5t0QyTfpu9gGDjji1b2E1MDd2H3rK2GRSjvHP88uogakiuRcZhZbSMrNf0MfWGnROddwRoQdlRPp3ANra3XDnvqa7Vz1x1EzNFqkagC2xF12uffX0/Q2Z5ftudJ0VtfFfzJf13cDe9FEEoYB6O9u+quBu4OkCztxMnrDCpbHgnYJHFfqRcFrNs/9YZWSLE/WJT/UiJ+r1PH8qUk3Mw4MPTP37VGLh3JsH/6JzMbKDyv0IYcA3tUVU6xJmIjr"], "millette"=>["AAAAB...
il reste à créer la clef SSH de root automatiquement et on est en voiture ici.
#7 Mis à jour par Antoine Beaupré il y a presque 11 ans
la fonction "ssh_keygen" du module shared utilise:
'/usr/bin/ssh-keygen','-t', 'rsa', '-b', '4096',
'-f', private_key_path, '-P', '', '-q'
on peut pas utiliser cette fonction parce que ça roule sur le puppetmaster, faut faire un "exec creates". mais la commande me semble plus simle que l'exemple de aegirvps... un peu.
#9 Mis à jour par Antoine Beaupré il y a presque 11 ans
gaaah... this was already resolved in the shared module:
https://gitlab.com/shared-puppet-modules-group/backupninja/blob/master/manifests/generate_sshkey.pp
damnit. it does use the ssh-keygen function, which generates the keys on the puppetmaster, which i didn't like... but maybe we should drink the coolaid.
#10 Mis à jour par Antoine Beaupré il y a presque 11 ans
note that i made a merge request here: https://gitlab.com/shared-puppet-modules-group/sshd/merge_requests/14