Outils pour utilisateurs

Outils du site


app:remote

Le contrôle à distance est devenu une pratique très courante. Les informaticiens s'en servent quasiment tous les jours, presque tous le temps dans ces deux cas : l’administration de serveurs distants et la télémaintenance (pour venir en aide aux utilisateurs). Je vais détailler ici, quelques méthodes ainsi que quelques astuces croustillantes comme le fameux Seamless.

Logiciels de télémaintenance

Il en existe plusieurs que je liste ci dessous :

  • Anydesk
  • TeamViewer
  • Microsoft Remote Desktop (RDP / mstsc)
  • Chrome Remote Desktop
  • VNC (UltraVNC, TightVNC, TigerVNC, RealVNC…)

Anydesk et Teamviewer sont tous deux des logiciels complets et faciles à prendre en main. On l'installe sur les deux postes (l'assistant et l'assisté en gros), l'assisté communique à l'assistant les codes affichés par le logiciel, et l'assistant se connecte et accède enfin au bureau de l'utilisateur assisté.

Microsoft Remote Desktop est intégré dans toutes les versions de Windows, et y est spécifique (même s'il existe une implémentation de ce protocole sur linux qui s'appelle xrdp et qui permet de faire un serveur RDP sur un système GNU/Linux). On s'en sert beaucoup pour prendre la main sur un serveur windows depuis une machine windows.

Chrome Remote Desktop est une extension du navigateur Chrome, et permet de prendre la main d'un pc à l'autre pourvu que Google Chrome y soit installé et soit lancé des deux coté (avec le navigateur ouvert, ou bien simplement exécuté en fond).

VNC est en fait un protocole d'affichage distant. Il est très complet et permet quelques bricolages sympas notamment sur Linux (comme utiliser l'écran d'une seconde machine comme étant un second écran du premier par exemple)

Seamless

Le seamless, ou headless, est le fait d'afficher la fenetre d'un systeme sur un autre, mais sans rien d'autre que la fenetre elle même. Ca peut etre très pratique dans certains cas.

Client Windows - Serveur/Hote/VM Linux

Exemple : je suis sur Windows. Je souhaite afficher une ou plusieurs fenêtre d'un système Linux distant (ça peut être un serveur, un pc, ou même une machine virtuelle)… Voici la méthode pour le faire :)

Prérequis

  • SSH pour windows
  • VCXSRV - Serveur d'affichage X pour Windows
  • XForward activé coté linux

Installer les prérequis sur Windows

SSH sur Windows 10
  • Aller dans Paramètres > Applications et cliquer sur Fonctionnalités facultatives
  • Si Client OpenSSH n'est pas dans la liste, cliquer sur Ajouter une fonctionnalités et l'installer
SSH sur Windows 7 et 8
  • Installer Chocolatey
  • Ouvrir CMD et saisir choco install -y openssh
VCXSRV

Ce serveur X pour Windows est basé sur les sources git de Xorg (le “vrai” serveur X pour linux), mais compilé avec MS Visual C++ 2012. Je choisis ce projet et pas Xming car ce dernier est inactif depuis plusieurs années maintenant… On peut le télécharger ICI.

Activation du XForward sur Linux
  1. Se connecter sur la machine linux, soit en ssh, soit directement sur son propre clavier/écran.
  2. Editer le fichier /etc/ssh/sshd_config (en root)
  3. Trouver la ligne X11Forwarding yes et la décommenter
  4. Redémarrer le service ssh systemctl restart sshd (cette commande fonctionne sur les systèmes utilisant SystemD, comme Archlinux ou Debian)

VirtualBox

S'il s'agit d'une machine virtuelle Linux sous VirtualBox, configurez comme ceci :

  1. Entrer dans la configuration réseau de la VM
  2. cliquer sur Avancé, puis Redirection de port
  3. Saisir la règle suivante:
NomProtocoleIP HôtePort HôteIP invitéPort invité
SSHTCP192.168.5.262210.0.2.1522

On peut bien sûr adapter comme on veut. Précision : l'IP invité est bien celle que la VM prend dans le NAT (faire un ip -4 a pour l'obtenir)

Utilisation

  • La première chose à faire est de lancer la VM (ou de s'assurer que l'hôte linux soit bien démarré)
  • Lancer le serveur X pour windows (vcxsrv)
  • Ouvrir CMD (ou bash pour windows / MSYS2 / Cygwin)
  • Se connecter en SSH sur la VM (si la connexion entre l'hote linux et le client windows est lente, spécifier -C pour activer la compression). ssh -C t0mux@192.168.5.26
  • Exporter la variable DISPLAY pour que linux sache où envoyer les fenêtres export DISPLAY=10.0.2.2:0
  • Il suffit ensuite simplement de taper le nom du programme à lancer mate-calculator

Attention : le lancement d'une application de cette façon va monopoliser le terminal… ce qui nous oblige à en lancer un nouveau, puis se reconnecter en ssh etc… c'est pas viable on veut se servir du linux comme un véritable serveur d'applications. Je vous propose d'ajouter l'alias suivant dans le .bashrc de votre linux :

alias SR='setsid $1 > /dev/null 2>&1 &'

Ceci aura pour effet de lancer le processus de façon indépendante avec setsid (si le terminal est fermé, le programme reste ouvert), de masquer le stdout et stderr avec > /dev/null 2>&1 et de libérer aussitôt le terminal avec &. Pour lancer un programme il suffit alors de saisir :

SR mate-calculator

Utilisateurs de MATE : je vous conseil transformer l'alias précédent en fonction et d'ajouter les 3 lignes suivantes à votre .bashrc

SR() {
setsid $1 > /dev/null 2>&1 &
}
 
export TERM=xterm-256color
export DISPLAY=10.0.2.2:0
SR /usr/lib/mate-settings-daemon/mate-settings-daemon

Utilisateurs XFCE : même chose que les utilisateurs de Mate mais avec la dernière ligne suivante SR xfce4-session

Ces 3 lignes permettent d'exporter immédiatement la varible DISPLAY au lancement de la connexion ssh, de définir la variable TERM correctement (empeche certains messages d'erreur…), et de lancer le daemon de MATE qui gère le parametrage de ce dernier y compris les thèmes ! Sinon vous n'aurez pas de thème sur vos application et ce sera assez moche. :)

Lanceurs (facultatifs)

Je n'ai pas trouvé de lanceurs sur le net pour ce genre de cas finalement assez spécifique. Donc j'ai tout simplement rédigé des scripts qui nous simplifient grandement la vie en faisant exactement tout ce que je viens de décrire précédemment mais de façon automatisée !

Lancement VM+X+menu

Ce script batch est à adapter en fonction de votre install et à exécuter sur l'hote windows. Il lance la machine virtuelle (si éteinte) en mode headless (en arrière plan), lance le serveur X pour windows (si non lancé), se connecte en ssh à la VM puis exécute le script bash qui est un menu CLI.

  • Xnunux.cmd
    @echo off
    REM Pour avoir une petite fenetre
    mode con cols=30 lines=12
     
    echo Demarrage de la VM...
    "%programfiles%\Oracle\VirtualBox\VBoxManage.exe" startvm "Manjaro" --type headless
    if %errorlevel% neq 0 cls
    tasklist | findstr vcxsrv.exe > NUL
    if %errorlevel% equ 0 goto ssh
     
    echo Demarrage du serveur X...
    start P:\apps\VcXsrv\vcxsrv.exe -multiwindow
    timeout /T 10 > NUL
     
    :ssh
    ssh -t -X t0mux@192.168.5.26 "bash ~/xmenu.sh"
script menu CLI

C'est le script qui est lancé par la connexion ssh du script batch… Je l'ai écrit pour me simplifier la vie pour lancer les programmes linux depuis windows. Attention, à adapter aussi : 10.0.2.2 est l'IP que mon hote windows a par rapport au réseau NAT de la VM.

  • xmenu.sh
    #!/bin/bash
     
    # "Silent Run"
    SR() {
    setsid $1 > /dev/null 2>&1 &
    }
     
    export TERM=xterm-256color
    export DISPLAY=10.0.2.2:0
    # SR /usr/lib/mate-settings-daemon/mate-settings-daemon # pour Mate
    # SR xfce4-session # pour XFCE
     
    while :
    do
        clear
        echo "## Lanceur ##"
        echo
        echo "C) Calculette"
        echo "E) Caja"
        echo "F) Firefox"
        echo "G) Qutebrowser"
        echo "R) Riot"
        echo "T) Terminal"
        echo
        echo "Q) Quitter"
     
        read -n1 -p ">" ch
     
        case $ch in
          c|C) SR mate-calculator;;
          e|E) SR caja;;
          f|F) SR firefox;;
          g|G) SR qutebrowser;;
          r|R) SR riot-desktop;;
          t|T) SR mate-terminal;;
          q|Q) exit;;
        esac
    done

Ouvrir une session distante (Linux)

C'est une sorte de multiseat, mais distant. En gros, on utilise les ressources d'un ordinateur (potentiellement déjà utilisé physiquement par quelqu'un) mais à distance. Donc par le biais d'une session, d'un VNC…

Méthode VNC

(en cours)

app/remote.txt · Dernière modification : 2024/01/05 05:30 de 127.0.0.1