app:remote
no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
Dernière révision | |||
— | app:remote [2021/03/16 16:18] – créée t0mux | ||
---|---|---|---|
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' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | Chrome Remote Desktop est une extension du navigateur Chrome, et permet de prendre la main d'un pc à l' | ||
+ | |||
+ | VNC est en fait un protocole d' | ||
+ | |||
+ | ===== Seamless ===== | ||
+ | |||
+ | Le seamless, ou headless, est le fait d' | ||
+ | |||
+ | ==== Client Windows - Serveur/ | ||
+ | |||
+ | 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' | ||
+ | * 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' | ||
+ | |||
+ | == 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:// | ||
+ | |||
+ | == Activation du XForward sur Linux == | ||
+ | |||
+ | - Se connecter sur la machine linux, soit en ssh, soit directement sur son propre clavier/ | ||
+ | - Editer le fichier **/ | ||
+ | - 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' | ||
+ | |||
+ | === Utilisation === | ||
+ | |||
+ | * La première chose à faire est de lancer la VM (ou de s' | ||
+ | * 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' | ||
+ | |||
+ | < | ||
+ | alias SR=' | ||
+ | </ | ||
+ | |||
+ | 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>& | ||
+ | |||
+ | < | ||
+ | SR mate-calculator | ||
+ | </ | ||
+ | |||
+ | **Utilisateurs de MATE :** je vous conseil transformer l' | ||
+ | |||
+ | < | ||
+ | SR() { | ||
+ | setsid $1 > /dev/null 2>&1 & | ||
+ | } | ||
+ | |||
+ | export TERM=xterm-256color | ||
+ | export DISPLAY=10.0.2.2: | ||
+ | SR / | ||
+ | </ | ||
+ | |||
+ | **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' | ||
+ | |||
+ | === 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... | ||
+ | " | ||
+ | if %errorlevel% neq 0 cls | ||
+ | tasklist | findstr vcxsrv.exe > NUL | ||
+ | if %errorlevel% equ 0 goto ssh | ||
+ | |||
+ | echo Demarrage du serveur X... | ||
+ | start P: | ||
+ | timeout /T 10 > NUL | ||
+ | |||
+ | :ssh | ||
+ | ssh -t -X t0mux@192.168.5.26 "bash ~/ | ||
+ | </ | ||
+ | |||
+ | == 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 | ||
+ | |||
+ | # " | ||
+ | SR() { | ||
+ | setsid $1 > /dev/null 2>&1 & | ||
+ | } | ||
+ | |||
+ | export TERM=xterm-256color | ||
+ | export DISPLAY=10.0.2.2: | ||
+ | # SR / | ||
+ | # 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 ">" | ||
+ | |||
+ | 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' | ||
+ | |||
+ | ==== Méthode VNC ==== | ||
+ | |||
+ | (en cours) |
app/remote.txt · Dernière modification : 2024/01/05 05:30 de 127.0.0.1