Bélier 1.1

Posté par  (site web personnel) . Modéré par Mouns.
Étiquettes :
21
12
oct.
2009
Linux
Bélier, le générateur de scripts pour automatiser des connexions SSH complexes, continue son petit bout de chemin. La version 1.1 est entrée dans Debian, apporte une nouvelle fonctionnalité majeure et des corrections de bugs.

Une nouvelle option vous permet maintenant de créer un tunnel de données entre votre machine source et le dernier hôte parmi les machines auxquelles vous allez successivement vous connecter. Au lancement du script généré par Bélier, un port en local sur votre machine source est ouvert et toutes les données envoyées par ce port arriveront directement sur l'hôte distant, vous évitant ainsi de fastidieux transferts entre toutes les machines intermédiaires. L'option prend bien sûr tout son intérêt lorsque vous avez un ou plusieurs ordinateurs intermédiaires à traverser avant d'atteindre la machine sur laquelle vous voulez travailler.

Vous trouverez une présentation rapide de Bélier dans la suite de la dépêche. Pour rappel, Bélier permet l’ouverture automatisée d’un terminal ou l’exécution de commandes sur un ordinateur distant via une connexion SSH. L’intérêt principal de Bélier réside dans sa capacité à traverser plusieurs machines intermédiaires avant d’accomplir la tâche assignée.

  • Bélier rend transparent pour l’utilisateur la traversée par la connexion SSH d'ordinateurs intermédiaires sur le chemin de l’hôte distant ;
  • Vous pouvez définir des commandes qui seront exécutées sur l’ordinateur distant ;
  • Les éventuels changements de compte sur les ordinateurs intermédiaires ou sur la machine finale peuvent être définis ;
  • Vous pouvez changer de ports pour la connexion SSH entre chaque hôte ;
  • Il est dorénavant possible de créer un tunnel de données entre votre machine source et la dernière machine à laquelle vous souhaitez vous connecter.

Bélier vise à fournir un outil aux administrateurs systèmes leur permettant de travailler de manière indépendante, sans avoir à modifier la configuration des machines qu'il traverse, juste en s'adaptant aux différentes configurations existantes, en regroupant tous les informations nécessaires aux différentes connexions au niveau du poste de l'utilisateur.

Bélier génère un script Expect en sortie qu’il vous suffira d’exécuter pour atteindre votre machine. Bélier est codé en Python.

Bélier n’est pas une alternative à l’échange de clés SSH (il peut d'ailleurs s'en servir) ou à des solutions centralisées de déploiement de logiciels. Son rôle est de permettre à un administrateur système qui ne possède pas la maîtrise totale de son parc ou qui ne peut pas mettre en place une solution centralisée d’administration, de travailler de manière productive sans perdre un temps considérable à atteindre ses machines.

Aller plus loin

  • # C'est bien pratique

    Posté par  (site web personnel) . Évalué à 6.

    Dans le cadre professionnel, j'ai à gérer un parc très important de serveurs dont l'accès est hétéroclite au possible.

    La syntaxe simplifiée de Bélier m'est vachement utile quand je veux créer un script d'accès à un serveur (comparé à la réalisation à la mano d'un script expect)

    Je ne considère pas Belier comme le logiciel de l'année, mais comme un bon petit script pratique :)
    • [^] # Re: C'est bien pratique

      Posté par  (site web personnel) . Évalué à 2.

      Ah bien merci de ce témoignage :) je crois qu'on est tout à fait dans le cadre d'utilisation que vise bélier.
      • [^] # Re: C'est bien pratique

        Posté par  (site web personnel) . Évalué à 4.

        Pour faire genre que je dis des trucs, quelques témoignages d'accès bizarres en SSH :

        — Accès via une certaine adresse IP (usage de ProyxCommand)
        — Accès via un ou plusieurs autres serveurs SSH
        — Accès root interdit sur un serveur où ne pas être root ne sert à rien (en gros lancer d'entrée de jeu un « su »)

        Ces combinaisons peuvent être mixées entre elles (la 3ème est quasiment systèmatique) faisant de l'accès « manuel » à un serveur une aventure toujours plus amusante que les autres !
  • # Internationalisation

    Posté par  (site web personnel) . Évalué à 2.

    J'ai oublié de préciser dans la dépêche que Bélier a été internationalisé il y a quelques versions. Seul l'anglais et le français sont disponibles pour l'instant.
  • # C'est mal

    Posté par  (site web personnel) . Évalué à 5.

    J'ai regardé le code (l'outil m'intéresse) et le code est écrit en français. Même si l'outil est internationalisé, le code lui, ne l'est pas, et c'est mal!

    Moinssez moi si vous voulez, mais essayez un jour de coder avec spip, entre la fonction propre() et la fonction sinon(), c'est honteux, c'est dommage que des developpeurs continuent encore à penser qu'à eux (essayez vous, un jour, de lire le code d'un soft codé en russe ou en allemand, j'ai essayé un jour, ça file sérieusement envie de tabasser le mec qui l'a fait).

    Mais sinon l'outil à l'air très bien (note positive tout de même).
    • [^] # Re: C'est mal

      Posté par  . Évalué à 6.

      Tout à fait d'accord, c'est d'ailleurs pourquoi les logiciels (libres) que je code désormais sont codés en Espéranto !
    • [^] # Re: C'est mal

      Posté par  . Évalué à 2.

      Et encore, t'as jamais vu de code chinois!

      ------------->
    • [^] # Re: C'est mal

      Posté par  (Mastodon) . Évalué à 5.

      juste fork le et change la langue :)
    • [^] # Re: C'est mal

      Posté par  . Évalué à 2.

      Le pire que j'ai vu pour l'instant, c'était un code coréen. Les noms de variables/classes/fonctions étaient du coréen écrit avec l'alphabet romain "classique" et les commentaires avec les symboles coréens (qui n'apparaissaient même pas correctement dans l'IDE que je devais utiliser à l'époque, Visual Studio).

      Super facile à prendre en main, rien que reconnaître les variables entre elles, c'était super dur ;)
  • # Mot de passes en clair ?

    Posté par  (site web personnel) . Évalué à 3.

    Il stocke toujours les mot de passe en clair dans un fichier de config ? Quid d'un petit fichier crypte en truecrypt pour memoriser les mots de passe ?

    J'dis ca, j'l'utilise pas, mais quand même, si je dois l'utiliser un jour, je serai très réticent à cause de ça.
    • [^] # Re: Mot de passes en clair ?

      Posté par  (site web personnel) . Évalué à 2.

      Bélier génère des scripts Expect, ce qui signifie que ce serait au script Expect lorsqu'il s'exécute d'aller chercher le mot de passe dans le fichier chiffré en truecrypt, ce qui est loin d'être trivial, les scripts Expect étant ce qu'ils sont, et pose certains problèmes qui alourdiraient un peu ce qu'est Bélier.

      Je vois plusieurs moyens simples de t'assurer une bonne sécurité, par exemple conserver les scripts dans un volume chiffré (trivial à mettre en place avec les linux actuels) ou les transporter sur une clé usb (elle-même chiffrée). Dans l'optique KISS, je préfère que Bélier ne fasse pas trop de sécurité (déléguant la tâche à d'autres qui le font mieux) mais qu'il fasse bien ce pour quoi il existe.

      Mais je ne suis pas fermé à l'idée, c'est juste que je ne vois pas de moyens simples pour l'implémenter pour l'instant.
  • # Pas convaincu par les exemples

    Posté par  . Évalué à 1.

    Je n'ai pas essayé bélier, j'ai juste regardé rapidement les exemples à cause de cette dépêche. Et bien, pour l'instant, je ne suis absolument pas convaincu.
    Le reproche principal : les mots de passe en clair dans la config (ie inutilisable depuis un portable qui a des risques non négligeables d'être volé un jour ou l'autre)

    J'ai aussi depuis longtemps des connections à faire à travers des machines intermédiaires. J'ai toujours réglé ça par une config correcte de mon .ssh/config. Les rebonds sont pris en charge directement par ssh, ce que fait que je peux alors utiliser tous les outils basés sur ssh (scp, rsync, ...) sans m'occuper du tout des machines intermédiaires (et avec des clés publiques/privées pour éviter les passwords même si ce n'est pas obligatoire). J'ai l'impression que, si on veut utiliser bélier avec rsync (par exemple), il faudrait modifier au minimum modifier la config de rsync. Bref, la dépêche ne me montre pas l'intérêt de bélier ici.
    • [^] # Re: Pas convaincu par les exemples

      Posté par  (site web personnel) . Évalué à 2.

      Pour t'assurer de tes données sur ton portable, il suffit d'avoir un système de fichiers chiffré. C'est proposé de base dans la plupart des distributions gnu/linux de nos jours.

      Pour Bélier, il suffit d'utiliser l'option -t du fichier de configuration qui permet de créer un tunnel entre ta source et ta destination. Cela t'ouvre un port en local sur ta machine et tu pourras tout à fait utiliser rsync ou autre.
      • [^] # Re: Pas convaincu par les exemples

        Posté par  . Évalué à 1.

        Mais je dois alors reconfigurer rsync pour qu'il utilise le tunnel (au lieu de lui mettre un nom), non ? Tu as un exemple ? Comment se passe l'allocation de port pour joindre la machine cible ? C'est toujours le même ou ça dépend de l'invocation de bélier ? Comment ça s'intègre dans un script ?
        Quant au système de partition chiffré, j'en ai un pour les données que je veux protéger. Ce sont aussi des données auxquelles je n'accède pas régulièrement : j'ai eu assez de pb de filesystem pour ne pas vouloir crypter mon /home en entier (ben oui, j'aime bien tester des noyaux nouveaux donc pas toujours encore très stables) et je n'ai pas envie que ce système soit monté en permanence (en général j'utilise le suspend-to-disk)
        Et encore une fois, je n'ai toujours pas compris l'intérêt de bélier par rapport à une config correcte de mon client ssh. Je dois passer à côté de quelque chose.

        Exemple classique : ensemble de machines dans le domaine toto.fr accessibles en passant par le firewall access.toto.fr

        .ssh/config :
        ========
        Host toto
        Hostname access.toto.fr
        User mylogin

        Host *.toto
        ProxyCommand ssh toto "tcpconnect `basename %h .toto` %p"
        User mylogin
        ========

        Et ça permet des trucs du genre

        rsync fichier interne.toto:/tmp

        pour transférer vers la machine interne.toto.fr en passant par access.toto.fr. Que m'apporterait bélier ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.