Re: VNC maintenance à distance

Top Page

Reply to this message
Author: Olivier Allard-Jacquin
Date:  
To: guilde
Subject: Re: VNC maintenance à distance
    Bonjour Vincent,

Le 05/08/2017 à 20:13, Vincent a écrit :
> Bonjour la guilde,
>
> D'abord, mes excuses :
>
> La dernière question que j'ai posé concernait le montage SMB sur le
> réseau dans ma classe ; je n'ai jamais trouvé le temps de tester le
> montage manuel (12/03/2017) et je n'ai donc fait aucun retour... Mon
> problème ressortira en septembre :-((
>
> Ensuite :
>
> Sollicité pour la maintenance à distance de postes linux (mon père, ma
> belle-mère, sa sœur ...), j'ai vainement tenté tenté la prise à distance
> du bureau pour dire "NON ... clique là, pas là".
>
> - Couple Vino / vinagre à travers des freebox (ai-je correctement
> redirigé le port 5900 ???) ou autre box.
>
> - Avec remmina comme client ...
>
> -le message était souvent "la connection a été fermée".
>
> -Tests avec Anne-Marie mais nous sommes restés bloqués...
>
> - Ma belle-tante m'a fait installer une solution propriétaire car son
> ancien mainteneur utilisait "teamviewer" : l'installation du paquet
> téléchargé sur leur site a déglingué mon synatique et j'ai mis 1h30 a
> débloquer la situation (retirer le paquet à coups de apt --remouv
> --force / dpkg ...). Bon ... questions :
>
> 1) Quelle solution (simple) préconisez-vous pour la prise de contrôle
> d'un bureau distant ?
>
> 2) Est-il bête de penser qu'il faut d'abord tester le protocole VNC
> avant de mettre la surcouche SSH ? (Cette question a-t-elle un sens ?).
>
> 3) Quels outils de test pour avancer pas à pas :
> -> Le serveur est-il lancé ?
> -> un firewall bloque-t-il le passage ?
> -> La config de la freebox est-elle bonne ?
> -> Plutôt le protocole NX ?
>
> Existe-t-il un tuto pas à pas ?
>
> Merci les jeunes.


    En 2008, j'ai présenté dans le cadre de la guilde une conférence sur
l'administration à distance. Les transparents sont ici:
http://olivieraj.free.fr/fr/linux/information/prise_en_main_a_distance_avec_linux/presentation/


    La partie qui t'intéresse comment ici:
http://olivieraj.free.fr/fr/linux/information/prise_en_main_a_distance_avec_linux/presentation/img34.html
et plus particulièrement là:
http://olivieraj.free.fr/fr/linux/information/prise_en_main_a_distance_avec_linux/presentation/img38.html
, avec un technique que j'utilise toujours :


    Le SSH callback


    L'idée est "simple":
- l'utilisateur que tu veux aider (newbee@bigserver) commence par créer
une connexion SSH vers une machine que tu administres.
 + cette machine peut être la tienne, ou pas (plus compliqué :
http://olivieraj.free.fr/fr/linux/information/prise_en_main_a_distance_avec_linux/presentation/img42.html
)


+ pour que cette connexion passe, il faut que ta box ait un port
forwarding vers ta machine

+ tu ne le fais pas arriver sur un vrai shell, mais sur un
pseudo-shell, chrooté de préférence :
http://olivieraj.free.fr/fr/linux/information/prise_en_main_a_distance_avec_linux/presentation/img39.html

+ pour des raisons de sécurité, tu peux planquer le port SSH utilisé
sur un port non standard

 + et évidement, il  se connecte avec une clé SSH que tu as dûment
autorisé, en mettant par exemple ceci sur ton /etc/ssh/sshd_config:
    PermitRootLogin no
    AllowUsers newbee
    PubkeyAuthentication yes
    PermitEmptyPasswords no
    PasswordAuthentication no
=> les lignes 2 et 5 protègent pas mal ...


+ dans la connexion que newbee active, ses ports 5900 (et de manière
optionnel 22) sont redirigés vers des ports à toi (15900 et 10022)

- l'utilisateur à distance lance "x11vnc", de préférence sur son port
loopback, et éventuellement avec un mot de passe : la ligne "x11vnc" de :
http://olivieraj.free.fr/fr/linux/information/prise_en_main_a_distance_avec_linux/presentation/img40.html

- à partir de là, tu lances une connexion "xtigervncviewer"
(xtighvncviewer ne fonctionne plus sous Debian ...) sur ton propre
propre 15900
    xtigervncviewer localhost:10000


il n'y a pas d'erreur, "xtigervncviewer" vas automatiquement rajouter
5900 au port, donc 10000 + 5900 = 15900


    Bénéfices:
- l'utilisateur à distance (newbee) décide de quand il donne accès à sa
machine. C'est lui qui initialise la prise en main à distance


- pour lui, cela se résume à double-cliquer sur un icône de son bureau,
ou à lancer un script à la main (dans le cas où il n'a plus de Xorg) :
http://olivieraj.free.fr/fr/linux/information/prise_en_main_a_distance_avec_linux/presentation/img40.html

- ses ports (x11vnc et éventuellement ssh) peuvent être configurés pour
n'écouter qu'en loopback. Donc sa machine est sécurisé

- évidement, si tu veux te connecter en SSH chez lui (optionnel), il
faut configurer son serveur SSH avec un "AllowUsers vincent" et
"PasswordAuthentication no", et mettre ta clé publique ssh dans son
"~/.ssh/authorized_keys

- avec une telle technique, il n'y a pas de box à configurer chez lui,
donc il peut même demander une prise en main depuis un wifi publique, un
hôtel, etc ...

- si vraiment des firewall entre lui et toi sont chatouilleux (si par
exemple il se connecte en passant par son smartphone ...), tu peux faire
que la connexion entrante chez toi se fasse sur un port "habituel"
d'Internet : 80 ou 443 ...

    Les moins:
- ta machine doit pouvoir être joignable depuis internet, donc c'est à
toi que revient le boulot de configurer ta box et son port forwarding


- si tu changes d'adresse IP souvent (ADSL avec IP dynamique), il faut
que tu passes par les services d'un "dyndns" ou équivalent. Ou plus
simple, tu donnes ton adresse IP à "newbee" lorsqu'il t'appelle, et il
modifie cette IP dans le script de prise en main à distance (encore plus
simple : le script de prise en main affiche une boite de saisit
d'adresse IP ...)

- il faut configurer la machine de "newbee" avant de pouvoir prendre la
main : x11vnc, script de connexion, ...

- cela nécessite de configurer un serveur SSH chez toi.
Personnellement, j'utilise une astuce assez intéressante de sshd_config,
qui définit un comportement particulier en fonction du groupe d'utilisateur:

<extrait>
# AllowUsers and AllowGroups could not be is in same time.
# So, all control access is done with AllowGroup, and with some
unique-user group
# Groups have to be created into /etc/group
AllowGroups olivier remote_access

Match user olivier
        PasswordAuthentication yes


        # Allow TCP forwarding
        AllowTcpForwarding yes


Match group remote_access
        PasswordAuthentication no


        # Chroot unsecure users...
        ChrootDirectory /somewhere/remote_access


        # Allow TCP formwarding ("ssh -L" option)
        AllowTcpForwarding no
</extrait>


    A deux reprises, j'ai parlé de SSH coté "newbee". Personnellement, pour
l'administration à distance, je préfère utiliser SSH que le graphique,
car cela lague moins. Donc je prends la main en SSH sur la machine à
distance, ce qui nécessite d'avoir un serveur SSH configuré du côté de
"newbee". Mais tu peux restreindre ce serveur au loopback.


    Pour ce qui est du soft de prise en main graphique, j'utilise x11vnc,
qui doit être lancé par "newbee" (le script proposé le fait
automatiquement). x11vnc/vnc ne sont pas réputés pour une utilisation à
travers le net (à cause du lag et du volume de données), mais en
utilisant l'encodage "Tight" qui fait de la compression jpeg à la volée,
le lag disparait


xtigervncviewer -PreferredEncoding Tight localhost:10000

    Enfin, sur Debian il y a un bug qui traîne en stable/testing depuis
quelques temps, qui fait que x11vnc plante de temps en temps, à cause
d'un mécanisme de détection du changement de l'image. Donc il faut
lancer "x11vnc" avec l'option supplémentaire "-noscr".
Mes derniers scripts utilisent donc :
x11vnc -noscr -noncache -noxdamage -display :0 -no6 -noipv6 -rfbportv6
-1 -rfbport 5900 -loop -localhost -rfbauth ${HOME}/.vnc/passwd


(il y a toute une tartine pour désactiver ipv6, cela n'a pas grand intérêt)

    J'utilise ce mécanisme depuis ~ 10 ans, avec un paquet d'utilisateurs
Linux, et cela marche bien.


    Dans un cas, il m'est même arrivé de le configurer avec un utilisateur
Windows, il faut simplement adapter les outils (putty à la place de ssh,
et MSTSC pour la connexion graphique).


    Cordialement,


                            Olivier
-- 
~~~~~~~  _____/\_____  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix /   _ \/ _   \    Olivier Allard-Jacquin
       /   / \  / \   \   Web:  http://olivieraj.free.fr/
      /___/  /  \  \___\  Mail: olivieraj@???
~~~~ /////  ///\\\  \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!