Accès à l’interface graphique à distance sur un ordinateur Linux en utilisant Tightvnc avec systemd
On janvier 13, 2022 by adminCeci est un guide d’installation de TightVNC sur le Raspberry Pi. La dernière version de Raspbian inclut maintenant le RealVNC qui est un outil alternatif de bureau à distance. Si vous préférez utiliser RealVNC alors il est facilement activé à travers l’outil raspi-config, ce guide sera utile pour ceux qui veulent comprendre la création d’autres applications à exécuter au démarrage à travers systemd.
La ligne de commande est un excellent moyen de gérer un ordinateur Linux distant si cela ne vous dérange pas de taper des commandes, mais parfois vous avez besoin de pouvoir visualiser une interface graphique. A défaut d’un très long câble, l’une des meilleures façons de le faire est d’utiliser le protocole VNC (Virtual Network Computing).
TightVNC vs Real VNC
Le serveur TightVNC crée une fenêtre virtuelle différente qui est répliquée sur une autre machine en utilisant le client TightVNC. Cela diffère de RealVNC qui normalement fait écho à l’écran par défaut.
Lorsque la plupart des gens pensent à un outil de bureau à distance alors ils pensent généralement à la façon dont RealVNC fonctionne. Dans ce cas, lorsque vous déplacez la souris, ou lancez une application, il affiche la même sortie sur un écran physiquement attaché (normalement HDMI) et sur un client distant sur le réseau.
TightVNC est utile si vous voulez exécuter quelque chose de différent de ce qui est sur l’écran principal. Par exemple, vous pourriez l’utiliser pour avoir un affichage d’état sur l’écran principal (via HDMI) avec un affichage différent utilisé pour la configuration qui est affichée sur un ordinateur portable.
Un autre avantage de TightVNC est qu’il s’agit d’un logiciel open source GRATUIT. En tant que tel, il n’a aucune restriction d’utilisation et vous pouvez voir et modifier le code source. Real VNC est une version commerciale de VNC et doit faire l’objet d’une licence. Real VNC est libre d’utilisation pour un usage personnel sur le Raspberry Pi, mais a des restrictions si vous voulez faire d’autres choses avec lui qui peuvent nécessiter une licence commerciale. Cela inclut l’exécution de l’image Raspbian Desktop sur un PC car cela n’inclut pas le logiciel commercial.
Installation d’un script de démarrage en utilisant Systemd
Voici les instructions sur la façon de configurer cela sur le Raspberry Pi (distribution basée sur Debian). Cela devrait être similaire pour toute autre distribution basée sur Debian (par exemple Ubuntu) qui utilise des fichiers de démarrage Systemd. Certaines autres distributions utilisent des outils d’installation de logiciels différents et éventuellement des outils de configuration d’init différents.
Si cela est utilisé en combinaison avec le guide pour faire fonctionner le Raspberry Pi sans tête avec Debian Linux, alors cela peut être utilisé pour configurer un Raspberry Pi pour un accès à distance sans jamais avoir besoin de le connecter à un moniteur.
Choisir TightVNC
Il existe plusieurs projets logiciels qui prennent en charge VNC. J’ai choisi d’utiliser TightVNC parce que c’est un logiciel libre et gratuit (GPL2), qu’il fournit une compression pour lui permettre de fonctionner sur un réseau lent (Internet) et qu’il est facilement disponible dans les dépôts de logiciels.
Modèle client-serveur
VNC suit le modèle traditionnel client-serveur. Le logiciel serveur s’exécute sur l’hôte auquel on veut accéder, et le logiciel client s’exécute sur la machine locale qui souhaite contrôler l’hôte. Le serveur et le client n’ont pas besoin d’être les mêmes (par exemple, le client peut être RealVNC alors que le serveur est TightVNC), mais certaines fonctionnalités ne peuvent fonctionner que lorsque le même client et le même serveur sont utilisés.
Installer le logiciel serveur TightVNC
D’abord rafraîchir les informations du référentiel logiciel en utilisantsudo apt update
Ceci est particulièrement important si vous venez d’installer le système d’exploitation car les informations du référentiel peuvent être incomplètes.
Installer le logiciel du serveur à partir des référentiels:sudo apt install tightvncserver
Démarrer le serveur et configurer un mot de passe
La première fois que vous exécutez le serveur, il vous demandera de définir un mot de passe. Il s’agit du mot de passe que vous utilisez lorsque vous vous connectez à distance.
/usr/bin/tightvncserver
Il n’est pas nécessaire de créer un mot de passe en vue seulement, à moins que vous ayez un besoin spécifique.
Lorsque le serveur démarre, il vous indique quel bureau virtuel a été configuré. Dans ce cas :New 'X' desktop is raspberrypi:1
dit que c’est le bureau virtuel 1. Vous vous y connecteriez en utilisant :1 à la fin de l’adresse IP dans le client, c’est celui que nous allons configurer pour qu’il démarre automatiquement plus tard.
Vous pouvez exécuter plusieurs instances. Chaque fois que vous démarrez tightvncserver, il utilisera le prochain bureau disponible, mais dans la plupart des cas, vous n’en aurez besoin que d’un seul.
Ajouter Tightvnc au démarrage de systemd
Pour que Tightvnc démarre automatiquement, nous devons créer un nouveau fichier de démarrage, qui doit être stocké dans le répertoire /etc/systemd/system/ et se terminer par le suffixe « .service ». Je l’ai appelé tightvncserver.service. Il doit être créé en tant qu’utilisateur root, donc en utilisant sudosudo nano /etc/systemd/system/tightvncserver.service
-
-
Description=TightVNC remote desktop server
-
After=sshd.service
-
-
-
Type=dbus
-
ExecStart=/usr/bin/tightvncserver :1
-
User=pi
-
Type=forking
-
-
-
WantedBy=multi-user.target
.
Vous devrez peut-être changer le nom d’utilisateur à la ligne 8. Il est actuellement défini sur pi qui est le nom d’utilisateur par défaut sur l’image Raspberry Pi Raspbian. Définissez-le avec le nom d’utilisateur que vous souhaitez utiliser pour vous connecter à TightVNC. Ne mettez pas root comme utilisateur.
Changez le fichier pour qu’il appartienne à rootsudo chown root:root /etc/systemd/system/tightvncserver.service
Faites le fichier exécutable en exécutantsudo chmod 755 /etc/systemd/system/tightvncserver.service
C’est une bonne idée de tester le script à ce stade plutôt que d’attendre après un redémarrage. Cela se fait en utilisant :sudo systemctl start tightvncserver.service
Ne vous inquiétez pas si vous obtenez le message d’erreur suivant, qui est dû au fait que vous avez déjà lancé tightvncA VNC server is already running as :1
Activer le démarrage au démarrage en utilisantsudo systemctl enable tightvncserver.service
TightVNC va maintenant démarrer au démarrage. Je vous recommanderais de redémarrer à ce stade pour vous assurer que cela fonctionne, mais vous pouvez simplement arrêter et démarrer le service en utilisant la commande systemctl à la place.
Notez que cela est conçu pour exécuter une seule instance de TightVNC sur l’ordinateur. Si vous voulez être en mesure de démarrer et d’arrêter des instances spécifiques de TightVNC, alors vous devrez modifier le script de démarrage de manière appropriée.
Installation de Tightvnc viewer (client VNC) sur un ordinateur Linux
Sur un ordinateur Linux, vous pouvez installer le viewer avecsudo apt install xtightvncviewer
ou si cela n’est pas dans les dépôts, essayez:sudo apt-get install ssvnc
Cela ne fonctionnera qu’avec les distributions basées sur Debian / Ubuntu, pour les autres distributions, utilisez le gestionnaire de paquets normal.
Notez que ssvnc – qui est la version que j’ai installée sur mon ordinateur Kubuntu est basée sur tightvnc, mais a également la possibilité de configurer le tunnelage ssh (voir plus loin) à travers l’interface graphique.
Connexion en utilisantxtightvncviewer 192.168.1.6:1
(remplacer par votre propre adresse IP selon le cas)
Installation de la vue Tightvnc sur un ordinateur Windows
Pour accéder à partir de Windows ou en utilisant le client Java à télécharger sur TightVNC.com
Sécuriser TightVNC
TightVNC permet à toute personne qui connaît le mot de passe de se connecter en tant qu’utilisateur sous lequel il fonctionne. Il le fait également sans cryptage, de sorte que n’importe qui peut fouiner dans la session. Heureusement, il existe une solution sécurisée, qui consiste à tunneliser la connexion sur un login ssh (secure shell).
La première étape consiste à restreindre Tightvnc à l’ordinateur local uniquement. Ceci est fait en ajoutant l’option -localhost lors du démarrage du tightvncserver. Pour ce faire, éditez la ligne 7 du fichier /etc/systemd/system/tightvncserver.service pour lire:>
ExecStart=/usr/bin/tightvncserver -localhost :1
Puis redémarrez le serveur.
Pour se connecter en utilisant ssh – connectez-vous d’abord à l’ordinateur hôte en utilisant sshssh [email protected] -L 5901:localhost:5901
L’option -L crée le tunnel, de l’ordinateur actuel (par défaut) port 5901 à l’ordinateur hôte (comme localhost) port 5901. Le port 5901 est le port par défaut pour l’écran 1, 5902 pour l’écran 2, etc.
Pour se connecter en utilisant tightvnc maintenant, utilisez la commandextightvncviewer 127.0.0.1:1
Notez que votre terminal précédent sera maintenant connecté au Raspberry Pi, vous devrez donc démarrer un nouveau terminal ou un nouvel onglet pour exécuter le visualiseur.
Si vous utilisez Windows alors le tunnel ssh peut être créé à partir de PuTTY
Puis connectez-vous en utilisant le client vnc en utilisant 127.0.0.1:1.
Vous pouvez maintenant utiliser l’interface graphique pour exécuter des applications sur le Raspberry Pi sans avoir besoin d’un moniteur ou d’un clavier. Si vous avez configuré la redirection de port sur votre routeur, vous pouvez le faire sur Internet.
Démarrer votre gestionnaire de fenêtres
Les instructions ci-dessus sont suffisantes pour le Raspberry Pi exécutant Raspbian (Debian). Sur d’autres systèmes, vous devrez peut-être apporter une modification supplémentaire à la configuration pour lancer votre gestionnaire de fenêtres / lanceur d’applications habituel. Si vous obtenez un écran vide lors de la connexion, éditez le fichier ~/.vnc/xstartup et remplacez la ligne /etc/X11/Xsession par l’un des éléments suivants, selon le cas.
exec ck-launch-session startlxde#for an lxde sessionexec ck-launch-session gnome-session#for a gnome-sessionexec ck-launch-session openbox-session#for an openbox desktopexec ck-launch-session startxfce4#for an xfce desktopexec ck-launch-session icewm#for an icewm desktopexec ck-launch-session startkde#for a kde desktop
Par exemple, avec Ubuntu, vous utiliserez l’entrée pour gnome, pour xubuntu, vous utiliserez xfce et pour kubuntu, kde. Le Raspberry Pi utilise lxde, mais celui-ci est lancé automatiquement sur le Raspberry Pi il n’est pas nécessaire de l’ajouter au fichier xstartup.
Laisser un commentaire