Project

General

Profile

Bug #11341

propager et creer automatiquement les clefs SSH pour les backups

Added by Antoine Beaupré over 12 years ago. Updated almost 11 years ago.

Status:
In progress
Priority:
Low
Assignee:
-
Target version:
-
Start date:
2013-07-17
Due date:
% Done:

50%

RT ticket:
Affected versions:
Points:
1
Sprint:

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...

History

#1 Updated by Gabriel Filion over 12 years ago

  • Status changed from New to 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 Updated by Antoine Beaupré over 12 years ago

  • Status changed from Need more info to 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 Updated by Gabriel Filion over 12 years ago

hmm t'as raison que ça change pas vraiment grand chose par rapport à ce qui est déjà en place..

#4 Updated by Antoine Beaupré about 11 years ago

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 Updated by Antoine Beaupré about 11 years ago

this file should also should be inspiration:

sshd/lib/facter/sshkeys.rb

#6 Updated by Antoine Beaupré almost 11 years ago

  • Status changed from New to In progress
  • % Done changed from 0 to 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 Updated by Antoine Beaupré almost 11 years ago

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 Updated by Antoine Beaupré almost 11 years ago

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.

Also available in: Atom PDF