Journal [autopromotion] Comment configurer une alternative basique à TeamViewer

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
27
6
mai
2019

RemoteHelpBuilder

RemoteHelpBuilder fournit des instructions pour configurer un système libre d'aide à distance, pouvant être vu comme une alternative basique à TeamViewer.

La configuration initiale est assez conséquente et est réservée à une personne possédant de bonne bases techniques (configuration d'un serveur intermédiaire, personnalisation et empaquetage d'un petit « logiciel client ») mais permet ensuite d'apporter facilement une aide à des personnes (éventuellement débutante) utilisant Windows (≥ XP) ou, bien entendu, Linux (actuellement Debian ≥ 8, Ubuntu ≥ 16.04 et Linux Mint ≥ 18.0).

J'utilise ce système depuis bientôt 2 ans dans le cadre de mon activité d'informaticien indépendant.

Vue d'ensemble

Une fois le système configuré, voyons comment cela fonctionne:

  • Contactez la personne à aider (par téléphone habituellement) pour l'aider à récupérer et installer le logiciel client. En suivant vos instructions, presque tout le monde devrait y arriver.
  • Connectez-vous en SSH avec l'option « X11 forwarding » sur le serveur intermédiaire pour y générer un mot de passe temporaire. Donnez ce mot de passe à la personne à aider.
  • La personne à aider lance votre logiciel, y tape le mot de passe et valide : une connexion SSH avec redirection de port est lancée vers votre serveur intermédiaire, et un serveur VNC démarre.
  • Toujours depuis le serveur, lancez un client VNC : vous pouvez apporter votre aide !
  • Une fois terminé, désactivez le mot de passe temporaire et déconnectez-vous du serveur.

Prérequis

  • Vous devez « être à l'aise » avec la ligne de commande et l'administration de machines Linux pour être capable de monter le système et d'en comprendre les risques de sécurité (j'espère que les instructions sont suffisamment claires).
  • Vous devez disposer d'un serveur intermédiaire, avec accès root, joignable depuis Internet sur son port SSH (il peut s'agir aussi bien d'un serveur privé virtuel que vous louez comme d'un Raspberry Pi derrière votre box). Celui-ci nécessite donc une adresse IP fixe ou d'être joignable par une requête DNS. Il est éventuellement possible de remplacer ce serveur par votre propre ordinateur sous Linux. Seuls des utilisateurs de confiance doivent avoir accès à ce serveur.
  • Vous devez être en mesure de distribuer le logiciel client aux personnes que vous souhaitez aider.
  • SSH ne doit pas être bloqué par un pare-feu (le port d'écoute et configurable).
  • La personne aidée et vous devez disposer d'une connexion ADSL de 1Mbits/s, mais 2Mbits/s sont conseillés.

Limitations

  • Ce système ne permet pas d'aider plus d'une personne à la fois.
  • Les clients Linux Wayland ne sont pas supportés.

Avertissements

  • Cette configuration se base sur de nombreuses choses avec lesquelles je n'ai que peu d'expérience, et n'a pas encore été relue : ça marche mais prenez le temps de réfléchir à la sécurité !
  • Le client Windows embarque PuTTY et UltraVNC, vous êtes donc responsables de leur mise à jour lorsque des mises à jour de sécurité sont publiées pour ces composants.

Ça vous intéresse ?

La documentation est le code sont à cette adresse : https://framagit.org/Yvan-Masson/RemoteHelpBuilder

Il était évident pour moi de publier en anglais pour toucher plus de monde, toutes mes excuses pour ceux qui ne le lisent pas.

De nombreuses choses peuvent être facilement améliorées, n'hésitez pas à me contacter pour en discuter et proposer vos pull-requests (comment dit-on ça en français ?). La marge de progression est grande notamment sur la qualité des scripts clients (Shell et VBS)…

  • # jitsi

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

    Pour ma part comme alternative à Teamviewer je propose souvent jitsi. C'est un outil de vidéoconférence libre avec une fonctionnalité de partage d'écran.
    L'avantage c'est que pour les invités un simple navigateur suffit.

    • [^] # Re: jitsi

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

      Je ne connaissais pas cette fonctionnalité de Jitsi (que je n'ai jamais testé) : est-il possible de contrôler l'ordinateur distant ou seulement de voir son écran ?

    • [^] # Re: jitsi

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

      une fonctionnalité de partage d'écran

      C'est pas vraiment l'idée de Teamviewer (comme de VNC utilisé par l'auteur du journal), qui est une fonctionnalité de prise de contrôle à distance.

      • [^] # Re: jitsi

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

        Quelle est la différence si le contrôle est possible par les invités ?

        • [^] # Re: jitsi

          Posté par  (site web personnel) . Évalué à -10. Dernière modification le 06 mai 2019 à 13:47.

          ton "si" est la différence, ta phrase est donc bizarre car ajoute une contrainte qui change tout en fait.

          Et comme souvent les outils de vidéoconférence (libres ou pas) n'ont pas ce "si" et que tu ne parles pas de prise de contrôle mais de partage d'écran, on peut douter que tu as compris l'idée derrière Teamviewer (ou VNC), ta suggestion est une alternative réelle seulement si tu peux confirmer que ton "si" est effectif (et ton autre commentaire laisse craindre que tu ne sais pas car n'a pas testé la fonctionnalité de prise de contrôle dans u n"simple navigateur" comme tu indiques comme avantage, donc on ne sait rien à part "je balance un nom, à vous de tester", ce qui est toujours un peu chiant à recevoir comme "conseil" car ça pollue le sujet plus qu'aide).

          • [^] # Re: jitsi

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

            J'ai testé le remote control avec l'appli electron et envoyé le lien vers cette appli avec mes correspondant et ça marche (et c'est pas "pire" que teamviewer qui nécessite aussi d'avoir une app installée).

            Jamais testé avec le simple navigateur parce que je n'avais pas envie de prendre le temps de debugger les éventuelles truandries en fonction des plus ou moins vieux navigateurs que les consultants utilisaient.

  • # Et c'est la que ça coince...

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

    SSH ne doit pas être bloqué par un pare-feu (le port d'écoute et configurable).

    Du coup, impossible de proposer une solution qui marche "partout" comme Teamviewer, et c'est la où ça coince, car on ne peut dire génériquement "ben tu n'as qu'à prendre l'équivalent libre".
    C'est ce qui a "tué" (disons ne pas faire décoller) pas mal de projets libres, à ne pas s'adapter aux contraintes des clients.

    De nombreuses choses peuvent être facilement améliorées, n'hésitez pas à me contacter pour en discuter et proposer vos pull-requests

    C'est un début de quelque chose, reste à avoir une interface pour l'admin plutôt que créer en terminal les mot de passe, et tunneler SSH en HTTPS…
    Curieux de voir si il y a du monde intéressé par un équivalemment libre à Teamviewer (perso Teamviewer me va et pas près à développer un concurrent libre pour le moment, mais je trouverai ça positif comme projet de titiller Teamviewer la dessus comme Framadate a pu arriver au niveau de Doodle).

    • [^] # Re: Et c'est la que ça coince...

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

      SSH ne doit pas être bloqué par un pare-feu (le port d'écoute et configurable).

      Du coup, impossible de proposer une solution qui marche "partout" comme Teamviewer, et c'est la où ça coince, car on ne peut dire génériquement "ben tu n'as qu'à prendre l'équivalent libre".
      C'est ce qui a "tué" (disons ne pas faire décoller) pas mal de projets libres, à ne pas s'adapter aux contraintes des clients.

      Effectivement, ça ne marche pas si la personne à aider se trouve derrière un pare-feu qui fait de l'inspection de paquet (donc de plus en plus d'entreprises), mais pour des particuliers et pas mal d'entreprise et d'associations pas de soucis. J'ai bien conscience que mon outil ne convient qu'à un cas d'usage spécifique. Peut-être que je devrais le préciser plus clairement dans la documentation ?

      C'est un début de quelque chose, reste à avoir une interface pour l'admin plutôt que créer en terminal les mot de passe, et tunneler SSH en HTTPS… Curieux de voir si il y a du monde intéressé par un équivalemment libre à Teamviewer (perso Teamviewer me va et pas près à développer un concurrent libre pour le moment, mais je trouverai ça positif comme projet de titiller Teamviewer la dessus comme Framadate a pu arriver au niveau de Doodle).

      J'aurais vraiment aimé trouvé quelque chose de "tout fait" mais ce n'était pas le cas, j'ai fait au mieux avec les moyens dont je dispose (pas le niveau pour développer un vrai logiciel et pas d'argent pour payer un développeur). Je serai par contre prêt (comme pas mal de monde je pense) à poser quelques sous sur la table si un développeur proposait un projet crédible dans ce sens.

      • [^] # Re: Et c'est la que ça coince...

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

        SSH ne doit pas être bloqué par un pare-feu (le port d'écoute et configurable).

        Du coup, impossible de proposer une solution qui marche "partout" comme Teamviewer, et c'est la où ça coince, car on ne peut dire génériquement "ben tu n'as qu'à prendre l'équivalent libre".
        C'est ce qui a "tué" (disons ne pas faire décoller) pas mal de projets libres, à ne pas s'adapter aux contraintes des clients.

        Effectivement, ça ne marche pas si la personne à aider se trouve derrière un pare-feu qui fait de l'inspection de paquet (donc de plus en plus d'entreprises), mais pour des particuliers et pas mal d'entreprise et d'associations pas de soucis. J'ai bien conscience que mon outil ne convient qu'à un cas d'usage spécifique. Peut-être que je devrais le préciser plus clairement dans la documentation ?

        Je viens de clarifier les manques de cet outils au début du README, ça permet en effet d'éviter des déconvenues.

      • [^] # Re: Et c'est la que ça coince...

        Posté par  . Évalué à 3.

        Il y a le "Bureau à distance Chrome" (chrome remote access ou chrome remote desktop), qui est censé pouvoir faire la même chose que team viewer, avec juste un code à entrer dans le navigateur, mais j'ai essayé entre 2 PC chez moi (sous linux), et c'était une galère à mettre en oeuvre, au final l'extension installée redirigeait vers une version d'un logiciel à installer, une fois ceci fait ça a fait planter mon PC :)

        Je vais regarder RemoteHelpBuilder et Jitsi avec attention…

        « Le pouvoir des Tripodes dépendait de la résignation des hommes à l'esclavage. » -- John Christopher

  • # x2go ?

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

    Salut

    J'ai l'impression qu'on est assez proche de ce qu'on peut faire avec https://wiki.x2go.org/doku.php
    On passe toujours par un serveur intermédiaire mais sans les contraintes ssh et cie.

    Dans tous les cas une alternative libre de plus ne peut être qu'une bonne chose merci :)

    • [^] # Re: x2go ?

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

      Je viens d'aller vérifier, X2Go permet cela mais seulement si l'ordinateur de la personne à aider est accessible sur son port 22 (https://wiki.x2go.org/doku.php/doc:usage:desktop-sharing), donc c'est un autre cas d'usage.

      • [^] # Re: x2go ?

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

        Le port par défaut est 22 pour ssh, mais rien n'empêche d'utiliser un autre port. Mais il faut bien ouvrir un port, et je crois que le serveur n'est dispo que pour Linux (quoique Linux est maintenant une app Windows…)

        Un LUG en Lorraine : https://enunclic-cappel.fr

  • # ssvnc en connexion inverse

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

    Je n'ai pas étudié ton système, mais je crois que ça se rapproche de ce qui est faisable avec ssvnc. J'avais écrit une doc là dessus: https://enunclic-cappel.fr/documents/aide-a-distance-avec-vnc/
    Dans la configuration que je montre à la fin, l'utilisateur peut se faire aider sans avoir à ouvrir de port.

    Avantage: c'est sécurisé, je fais plutôt confiance au créateur de ssvnc et x11vnc, ce n'est pas un bricolage perso, c'est disponible dans les dépôts.

    Inconvénient: x11vnc n'est pas disponible pour Windows, mais peut être que ça peut marcher avec un autre serveur VNC.

    Un LUG en Lorraine : https://enunclic-cappel.fr

    • [^] # Re: ssvnc en connexion inverse

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

      Merci pour la documentation !

      Effectivement on en revient à un système équivalent, peut-être un peu plus simplement. Mais les "grosses" étapes restent identiques :
      - pondre un script avec Zenity/Yad pour que ce soit accessible à la personne aidée
      - empaqueter ça dans un .deb (ou Flatpak / Snap / Appimage que sais-je encore) pour que ce soit installable facilement

      Pour quelqu'un qui ne doit aider que des personnes sous Linux, ta solution semble la meilleure. Pour quelqu'un qui doit aider des gens sous Linux et Windows, la solution que je présente à le (petit) avantage d'être "similaire" pour ces deux OS.

      • [^] # Re: ssvnc en connexion inverse

        Posté par  . Évalué à 3.

        plus artisanal, dans le meme genre, c'est pour ma famille, du coup j'ai moins de contrainte de temps.

        un serveur ssh configurer sur le port 443, puis soit ils lance un lanceur (ssh) que je leur fourni soit il tape la ligne de commande reçu par mail, bon honnêtement il ne font que lancer le lanceur. puis je me connecte sur le serveur et de la je fait du reverse ssh, pour les cas ou il faut montrer qqchose j'utilise nomachine ponctuellement, 99,9% du temps c'est une mise a jour qui foire du coup ssh c'est bon.

        toujours accessible de n'importe ou.

        pour Windows pareil reverse ssh et nomachine par contre il doivent installer putty, et si ca foire : genre ils l'ont installé mais où ? cela peut durer des heures :D

        connexion du client :
        ssh -R 12345:localhost:22 -l utilisateur -p 443 mon.serveur.sshd.1

        connection coté serveur pour remonter :
        ssh -p 12345 utilisateur@localhost

        attention l'usage de localhost est obligatoire, du moins je n'ai pas réussi avec 127.0.0.1

  • # DWService est peut-être une alternative...

    Posté par  . Évalué à -1.

    Je ne peux pas en juger, n'ayant jamais eu à l'utiliser, pas plus que TeamViewer d'ailleurs…

    Voici la description que j'ai pu lire sur https://blog.microlinux.fr/dwservice/:
    "DWService est un service de contrôle d’accès à distance facile à prendre en main disponible pour Linux, Windows, Mac OS X et Raspberry. L’agent est publié sous licence libre, et il est gratuitement téléchargeable pour toutes les plate-formes. L’accès aux machines distantes s’effectue depuis un simple navigateur web, même depuis une tablette ou un smartphone."

Suivre le flux des commentaires

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