Journal coquillage inversé légitime

Posté par  (site web personnel) .
18
29
nov.
2025

l'enfer c'est les autres

Récemment et contre tout bon sens, je me suis mis à offrir du support technique pour une utilisatrice GNU/Linux bidouillarde mais peu expérimentée. Mme Michu dispose d'une machine tournant sous une distribution avec laquelle je ne suis pas familier (Curvy Linux) qui a été installée par une personne qui n'est plus disponible.

Après le premier contact, il est vite apparu qu'il n'aurait pas été sain pour mon foie de me déplacer pour chaque intervention. D'où le besoin de mettre en place une solution de manipulation à distance. Mme Michu étant déjà habituée à une solution qui marche mais avec laquelle je m'interdit de contaminer mes machines, j'ai naturellement décidé de lui installer un truc plus compliqué et qui marche moins bien.

J'ai commencé par interroger un panel d'experts qui, dans leur grande sagesse, m'ont recommandé d'abandonner sans être capable de suggérer une piste de solution. Après avoir examiné la topologie locale ainsi que l'état de l'art, j'ai décidé qu'une solution à base d'OpenSSH me semble pas pire. Le reste de ce document décrit comment j'ai procédé.

salade de ports

Il y a trois machines en jeu : admin, serveur, client. La machine admin est mon poste de travail sur lequel je dispose d'un utilisateur et d'un client ssh. La machine serveur est une machine virtuelle nuagique disposant d'une adresse internet obsolète mais publique et sur laquelle j'ai le contrôle. La machine client est celle de Mme Michu.

Je veux réduire les risques qu'une présence malfaisante sur client puisse se propager à serveur ou admin et inversement. Je veux aussi donner à Mme Michu un semblant de contrôle sur quand j'accède à sa machine.

J'ai commencé par générer une clé SSH pour michu@client et à en copier la portion publique dans le ~/.ssh/authorized_keys de l'utilisatrice michu@admin fraîchement crée avec quelques restrictions :

no-agent-forwarding,no-pty,no-user-rc,no-X11-forwarding,command="/bin/sleep 31536000000000000",permitlisten="localhost:1337" ssh-rsa Ym9uam91ciBnZW50aWwgaGFja2VyIGRlIGxpbnV4ZnIK michu@client

En gros ça veut dire « autoriser uniquement le transfert de ports, n'autoriser à écouter que sur le port 1337 et déconnecter automatiquement après un milliard d'années ». Il y a bien un restrict qui permet d'activer toutes les restrictions mais il n'est apparemment pas possible de surcharger cette directive pour n'en autoriser qu'une (le transfert de ports). Ça veut aussi dire que la prochaine fois qu'OpenSSH implémente une nouvelle fonctionnalité associée à une directive no-*, il faudra penser à ajouter cette dernière explicitement.

Du côté client, j'ai installé un serveur OpenSSH qui n'écoute que sur les adresses de la boucle locale :

ListenAddress localhost

Je me suis crée un compte krunch@client sur lequel j'ai copié ma clé SSH publique et que j'ai ajouté aux sudoers.

J'ai aussi ajouté ceci dans le ~/.ssh/config de michu@client :

Host serveur
    HostName serveur.example.com
    RemoteForward localhost:1337 localhost:22

L'idée est qu'une fois la connexion ssh établie, le port 1337 sur serveur sera transmis au port 22 sur client. Le HostName permet aussi d'économiser un peu les doigts de Mme Michu.

Du côté admin, il me reste juste à ajouter ceci à mon ~/.ssh/config :

Host client
    HostName localhost
    Port 1337
    ProxyJump serveur.example.com

La subtilité vient de la toute nouvelle directive ProxyJump introduite dans OpenSSH 7.3 en 2016. Le client ssh se connecte d'abord à serveur, établi un tunnel TCP vers le port 1337 de serveur puis se connecte via ce tunnel. C'est un peu comme ForwardAgent / -A mais sans avoir à faire confiance à serveur.

En image, ça donne ceci :

   ┌──────┐  ┌──────────┐  ┌─────┐
   │client│  │  serveur │  │admin│
   │      │  │          │  │     │
   │   ───├──►22        │  │     │
   │      │  │          │  │     │
   │      │  │┌───────22◄──┤───  │
   │      │  ││         │  │     │
   │      │  │└─►1337──┐│  │     │
   │      │  │         ││  │     │
   │ 22◄──│──│─────────┘│  │     │
   │      │  │          │  │     │
   └──────┘  └──────────┘  └─────┘

après l'effort, l'effort suivant peut commencer

Maintenant, lorsque Mme Michu m'appelle pour que je l'aide avec le pilote de sa nouvelle carte wifi, je peux lui demander de taper ssh serveur dans son coquillage, suite à quoi il me suffit d'exécuter ssh client pour être connectée chez elle.

colophon

Pour des raisons évidentes de respect de la vie privée, les nom des machines, des distributions GNU/Linux ainsi que les numéros de ports ont été modifiés, sauf localhost et 22 pour des raisons d'intelligibilité.

  • # illustration

    Posté par  (site web personnel) . Évalué à 4 (+3/-1). Dernière modification le 29 novembre 2025 à 12:20.

    Malheureusement DLFP ne semble pas à la pointe de la technologie en ce qui concerne le rendu des caractères ASCII. J'ai ouvert un suivi. En attendant qu'il soit traité (aussitôt après que le bogue précédent sur le sujet que j'ai ouvert en 2014 sera corrigé j'imagine), vous pouvez consulter l'illustration dans toute sa gloire originelle via le lien dans le journal que je recopie ici avec une correction mineure.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: illustration

      Posté par  . Évalué à 3 (+2/-0). Dernière modification le 29 novembre 2025 à 13:09.

      Bonjour

      …DLFP ne semble pas à la pointe de la technologie en ce qui concerne le rendu des caractères ASCII. …

      J'avais déjà eu le même problème sur d'autres types de forums.

      Ici, ce n'est pas le rendu des caractères ASCII, mais la hauteur de ligne qui fait 1.5em et qu'il faudrait mettre à 1em pour que les traits verticaux de ton diagramme soient joints.

      Mais ça risque sûrement d'impacter d'autres éléments, et ça serait peut-être un trop gros boulot d'analyse à faire de tous les fichiers css pour pas grand-chose
      puisque ton diagramme ascii est quand même parfaitement lisible.

      Cordialement.

      … et dans ce royaume, ceux qui y voient un peu plus clair sont parfois très mal vus.

      • [^] # Re: illustration

        Posté par  . Évalué à 1 (+0/-0).

        Pour tester la modification qui permettrait d'afficher correctement ton diagramme.

        Avec Firefox :

        Click droit sur ton diagramme => affichage d'un menu contextuel
        Click dans le menu contextuel sur l'option "Inspecter"

        Chercher le sélecteur css "pre code"
        y ajouter la propriété suivante :

        line-height:1em;

        Le diagramme s'affichera alors comme tu le voudrais.

        Mais si cette même règle était appliquée pour toutes les pages du forum,
        les lignes de code affichées (ça se voit surtout avec les lettres en majuscule) seront collées l'une à l'autre.

        Donc, même si l'ajout de cette propriété css fonctionne bien pour faire apparaître ton diagramme correctement
        ça va rendre affreux l'affichage de tous les scripts et autres lignes de texte qui sont dans une balise code.

        … et dans ce royaume, ceux qui y voient un peu plus clair sont parfois très mal vus.

  • # RustDesk ?

    Posté par  (site web personnel) . Évalué à 10 (+10/-1).

    Salute,

    J'utilise RustDesk depuis quelques temps, avant je contaminais mes machines avec TeamViewer (devenu pénible).

    Tcho !

  • # Rustdesk ?

    Posté par  . Évalué à 4 (+4/-1).

    Rustdesk est libre et fonctionne comme Teamviewer.

    • laisse la permission à la cliente
    • donne l'accès à l'interface graphique (quoique via Xorg il y a sans doute moyen avec ta solution)
    • et par le même biais la laisse voir ce que tu fais
    • fonctionne sur mobile, y compris les boutons système bluetooth/wifi/luminosité/etc
    • [^] # Re: Rustdesk ?

      Posté par  . Évalué à 4 (+4/-0).

      Bonjour
      J'utilise rustdesk aussi, pour aider ma belle mère à distance.
      Une fonctionnalité appréciable,mais à utiliser avec précaution : la connexion à distance sans la permission de la belle mère, en prenant le contrôle sur l'écran de login (lightdm)
      Utile quand la belle mère ne sait plus taper son mot de passe ! Elle peut voir toutes mes actions et aussi interagir sur l'écran.
      Elle a 75 ans et grande débutante sur tout type d'ordinateur. Félicitations à elle pour sa persévérance.

  • # DWService ?

    Posté par  . Évalué à 1 (+0/-0). Dernière modification le 29 novembre 2025 à 15:56.

    Je fais aussi du support à distance pour mon père en particulier, qui est sous fedora.
    J'utilisais openssh, ou même openvpn, j'ai testé aussi tmate mais le besoin de partager la même vision de l'écran est necessaire de temps en temps pour le guider dans des manips, lui apprendre comment il aurait du faire par lui même…

    Pendant une periode j'utilisais teamviewer, mais j'ai arrêté quand ils ont changé les conditions d'usage.

    finalement j'ai choisi DWService. il y a un client à lancer sur le PC sur lequel on veut prendre la main, et coté "admin" il suffit d'utiliser un navigateur. ça juste marche.

    Je ne connaissais pas rustdesk, j'y jetterai un oeil.

  • # gitso ?

    Posté par  (site web personnel) . Évalué à 2 (+0/-0).

    Il y a un temps, j'utilisais gitso (qui n'a pas été mis à jour depuis 11 ans par contre…)

    Pas de serveur et très peu de configuration côté Michu. C'est du côté admin où il faut ouvrir les bons ports sur une IP publique.

    On donne l'IP de l'admin, Michu rentre cette adresse dans l'app et c'est tout.

    Matthieu Gautier|irc:starmad

  • # OpenVPN, KRFB+KRDC

    Posté par  . Évalué à 3 (+1/-0).

    Ma freebox a un serveur OpenVPN, j'ajoute des comptes aux personnes que je dépanne (et leur charge le .ovpn quand je leur fait leur install).

    Besoin d'aide ? "cliquer sur le bouclier dans la liste des WiFis" et elles sont sur mon réseau local.

    Si je peux m'en sortir en SSH (quand j'ai un compte ou une clé sur leur machine) ça suffit.

    Sinon manip 2 de leur côté "lancer KRFB et me donner le mot de passe à usage unique", KRDC de mon côté et voilà.

    Effectivement RustDesk est censé intégrer tout ça en 1, mais pas encore testé…

  • # nebula

    Posté par  (Mastodon) . Évalué à 3 (+0/-0). Dernière modification le 30 novembre 2025 à 12:08.

    J'aurais utilisé nebula, un outil de vpn maillé avec aussi 3 noeuds dont un accessible via une adresse ip publique.

    Un simple script utilisant zenity/yad pour avoir un peu de gui et executable via un fichier .desktop pour cette personne qui ne se connecte au réseau nebula que quand elle a besoin d'aide et toi après tu peux accéder à sa machine via ssh/vnc/rdp/moonlight ou que sais-je.

  • # zerotier, nomachine

    Posté par  (Mastodon) . Évalué à 2 (+0/-0).

    pour ceux qui peuvent faire de l'auto hébergement, je recommande rustdesk.
    Mais:

    si l'idée est d'intervenir sur un windows distant, teamviewer/anydesk ne sont pas si mal. Ils fonctionnent.

    Mais :
    si vous pouvez avoir un VPN pour vous relier, sans passer par ces deux services, voilà comment je fais, valable sous win/nux :
    -crééer un tunnel vpn chez zerotier
    -faire installer le vpn chez la personne, et l'autoriser sur le vpn
    -joindre via NoMachine, l'adresse zerotier de la personne

    je fais ca en ipv6 avec du lien local depuis six mois, ça fonctionne. Nomachine, en version gratuite, se base sur du SSH.

    le seul pépin, c'est que pour un windows avec session sans mdp, ça passe pas :D

    • [^] # Re: zerotier, nomachine

      Posté par  (Mastodon) . Évalué à 3 (+0/-0).

      Pourquoi utiliser un outil propriétaire (nomachine) plutôt que ses pendants libres freenx ou x2go?

      Je crois qu'à l'heure où beaucoup de bureaux proposent wayland par défaut, ces solutions ne vont de toute façon pas marcher partout.

      • [^] # Re: zerotier, nomachine

        Posté par  (Mastodon) . Évalué à 2 (+0/-0).

        Pourquoi utiliser un outil propriétaire (nomachine) plutôt que ses pendants libres freenx ou x2go?

        x2go j'en ai entendu parler, c'est surtout orienté grands réseaux et corporates, amha

        freenx semble être l'ancetre de nomachine, non maj depuis au moins dix ans.. tous les tutos datent d'avant 2010…

        voilà pourquoi..

  • # Liens

    Posté par  (site web personnel) . Évalué à 2 (+0/-0).

    Solution un peu complexe mais laissant le sentiment du travail accompli !
    De mon côté, j'ai adoré suivre tes liens 😉.

Envoyer un commentaire

Suivre le flux des commentaires

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