Outils pour utilisateurs

Outils du site


app:remote

Différences

Ci-dessous, les différences entre deux révisions de la page.


Révision précédente
app:remote [2024/01/05 05:30] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +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 [[https://sourceforge.net/projects/vcxsrv/|ICI]].
 +
 +== Activation du XForward sur Linux ==
 +
 +  - Se connecter sur la machine linux, soit en ssh, soit directement sur son propre clavier/écran. 
 +  - Editer le fichier **/etc/ssh/sshd_config** (en root) 
 +  - Trouver la ligne **X11Forwarding yes** et la décommenter 
 +  - 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 :
 +
 +  - Entrer dans la configuration réseau de la VM 
 +  - cliquer sur Avancé, puis Redirection de port 
 +  - Saisir la règle suivante: 
 +
 +^Nom^Protocole^IP Hôte^Port Hôte^IP invité^Port invité|
 +|SSH|TCP|192.168.5.26|22|10.0.2.15|22|
 +
 +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:
 +  * 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 :
 +
 +<code>
 +alias SR='setsid $1 > /dev/null 2>&1 &'
 +</code>
 +
 +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 :
 +
 +<code>
 +SR mate-calculator
 +</code>
 +
 +**Utilisateurs de MATE :** je vous conseil transformer l'alias précédent en fonction et d'ajouter les 3 lignes suivantes à votre .bashrc
 +
 +<code>
 +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
 +</code>
 +
 +**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** <code>
 +@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"
 +</code>
 +
 +== 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** <code>
 +#!/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
 +</code>
 +
 +===== 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)