Après vous avoir présenté tightvncserver puis x11VNC, voici venir TeamViewer (TW) pour le Raspberry Pi.
Encore une façon de prendre la main à distance sur un Raspberry Pi, très intéressante si le RasPi est headless (sans écran/clavier).
Alors que les solutions précédentes utilisaient des ports particuliers, TW utilise les ports standard 80 et 443.
TeamViewer : prenez la main à distance sur votre Raspberry Pi
Comment ça marche ?
En pratique chacune des deux machines se connecte à un serveur tiers appelé ici TeamViewer Maître chez TW (en rouge). Comme ils utilisent des ports standard, il n’y a pas de ports visibles ouverts, donc moins d’attaques. Ensuite c’est le serveur qui se charge de transférer les informations d’une machine à l’autre.
Lors de l’établissement d’une connexion, TeamViewer détermine le type de connexion optimal. Après authentification via les serveurs TW, une connexion directe est établie dans 70 % des cas via UDP ou TCP (et ce même derrière les passerelles normalisées, les routeurs NAT et les pare-feux). Les autres connexions sont acheminées par le biais du réseau de routeurs redondant de TW via TCP ou tunnel HTTP. Il n’y a donc pas besoin d’ouvrir des ports pour pouvoir travailler avec TeamViewer !
Vu côté utilisateur, c’est comme si les deux machines étaient directement reliées (en bleu). C’est une des différences fondamentales avec tightvncserver ou x11VNC, qui réalisaient une liaison en direct entre les deux machines.
Secret pour tout le monde
Comme décrit ci-dessous, même chez TeamViewer, exploitant des serveurs de routage, personne ne peut lire les données chiffrées échangées.
Le trafic TeamViewer est sécurisé par des échanges de clés publiques/privées RSA et un chiffrement de session AES (256 bits). Cette technologie est basée sur les même standards que les technologies HTTPS ou SSL et est considérée comme parfaitement sécurisée selon les normes actuelles. Comme la clé privée ne quitte jamais l’ordinateur client, ce procédé permet d’assurer que les ordinateurs intermédiaires (y compris les serveurs TeamViewer) ne peuvent pas déchiffrer les données. La clé publique du cluster maître est déjà intégrée dans chaque client TeamViewer. Ceci permet de chiffrer les messages envoyés au cluster maître et de vérifier sa signature. L’infrastructure à clé publique PKI empêche efficacement les attaques intermédiaires du type « man in the middle » (homme du milieu).
Par ailleurs, avec le chiffrement, le mot de passe n’est jamais transmis directement, mais selon le procédé « challenge-response » (stimulation/réponse) et n’est mémorisé que sur les ordinateurs locaux. Pendant l’authentification, le mot de passe n’est jamais transmis directement grâce à l’utilisation du protocole SRP (Secure Remote Password). Uniquement un vérificateur de mot de passe est stocké sur l’ordinateur local.
Et… c’est sûr ?
Les identifiants TeamViewer sont générés directement et automatiquement par TeamViewer à l’aide des caractéristiques matérielles de l’ordinateur. Les serveurs TeamViewer contrôlent la validité de cet identifiant à chaque connexion.
La protection contre les attaques par force brute
Dans la pratique, ce sont cependant souvent des attaques très primitives qui s’avèrent les plus dangereuses. Dans le contexte de la sécurité informatique, une attaque par force brute est souvent la tentative de deviner, par des essais répétés, un mot de passe qui protège l’accès à une ressource. Grâce à la performance croissante des ordinateurs disponibles sur le marché, le temps nécessaire pour deviner un mot de passe long est considérablement réduit. Pour dissuader les attaques par force brute, TeamViewer augmente de façon exponentielle le temps d’attente entre les tentatives de connexion.
Ainsi, pour 24 tentatives, 17 heures sont nécessaires. Le temps d’attente entre les tentatives de connexion n’est réinitialisé qu’une fois le mot de passe entré avec succès. TeamViewer protège contre des attaques provenant d’un ordinateur spécifique, mais aussi contre celles provenant de plusieurs ordinateurs. Ces attaques sont connues sous le nom d’attaques botnet, qui tentent d’accéder à un identifiant spécifique.
Installation de TeamViewer sur le Raspberry Pi
Raspbian Jessie en mode graphique
Bon, on va passer à la pratique, si vous le voulez bien…
Il y a quelque temps il n’était pas forcément facile de trouver le logiciel sur le site de TeamViewer, la version destinée au Raspberry Pi est accessible sous forme de paquet .deb sur cette page : https://www.teamviewer.com/iotcontest. Il est aussi accessible à présent sur la page des téléchargements Linux.
Commencez comme toujours par la mise à jour de votre version de Raspbian :
sudo apt-get update sudo apt-get upgrade
Mais bon, une fois trouvé on va pouvoir l’installer. Si vous préférez le mode graphique (quelle idée ! ) allez sur la page et cliquez sur le bouton Download…
Plus sérieusement dans un terminal lancez a récupération du paquet .deb :
wget http://download.teamviewer.com/download/linux/version_11x/teamviewer-host_armhf.deb
pi@raspberrypi:~ $ wget http://download.teamviewer.com/download/linux/version_11x/teamviewer-host_armhf.deb --2016-08-25 15:36:49--  http://download.teamviewer.com/download/linux/version_11x/teamviewer-host_armhf.deb Résolution de download.teamviewer.com (download.teamviewer.com)… 46.163.100.214, 46.163.100.216, 46.163.100.213, ... Connexion à download.teamviewer.com (download.teamviewer.com)|46.163.100.214|:80… connecté. requête HTTP transmise, en attente de la réponse… 301 Moved Permanently Emplacement : https://download.teamviewer.com/download/linux/version_11x/teamviewer-host_armhf.deb [suivant] --2016-08-25 15:36:49--  https://download.teamviewer.com/download/linux/version_11x/teamviewer-host_armhf.deb Connexion à download.teamviewer.com (download.teamviewer.com)|46.163.100.214|:443… connecté. requête HTTP transmise, en attente de la réponse… 302 Found Emplacement : https://downloadeu2.teamviewer.com//download/linux/version_11x/teamviewer-host_11.0.63329_armhf.deb [suivant] --2016-08-25 15:36:49--  https://downloadeu2.teamviewer.com//download/linux/version_11x/teamviewer-host_11.0.63329_armhf.deb Résolution de downloadeu2.teamviewer.com (downloadeu2.teamviewer.com)… 178.162.205.111, 2a00:c98:2050:a031:1::1 Connexion à downloadeu2.teamviewer.com (downloadeu2.teamviewer.com)|178.162.205.111|:443… connecté. requête HTTP transmise, en attente de la réponse… 200 OK Taille : 6231798 (5,9M) [application/octet-stream] Sauvegarde en : « teamviewer-host_armhf.deb » teamviewer-host_arm 100%[=====================>]   5,94M   462KB/s   ds 14s 2016-08-25 15:37:03 (450 KB/s) — « teamviewer-host_armhf.deb » sauvegardé [6231798/6231798]
Une fois le paquet récupéré on peut l’installer :
sudo dpkg -i teamviewer-host_armhf.deb
pi@raspberrypi:~ $ sudo dpkg -i teamviewer-host_armhf.deb Selecting previously unselected package teamviewer-host. (Reading database ... 118080 files and directories currently installed.) Preparing to unpack teamviewer-host_armhf.deb ... Unpacking teamviewer-host (11.0.63329) ... dpkg: dependency problems prevent configuration of teamviewer-host: teamviewer-host depends on libqt5gui5 (>= 5.2.1); however: Package libqt5gui5 is not installed. teamviewer-host depends on libqt5widgets5 (>= 5.2.1); however: Package libqt5widgets5 is not installed. teamviewer-host depends on libqt5qml5 (>= 5.2.1); however: Package libqt5qml5 is not installed. teamviewer-host depends on libqt5quick5 (>= 5.2.1); however: Package libqt5quick5 is not installed. teamviewer-host depends on libqt5webkit5 (>= 5.1.1); however: Package libqt5webkit5 is not installed. teamviewer-host depends on libqt5x11extras5 (>= 5.2.1); however: Package libqt5x11extras5 is not installed. teamviewer-host depends on qtdeclarative5-qtquick2-plugin (>= 5.2.1) | qml-module-qtquick2 (>= 5.2.1); however: Package qtdeclarative5-qtquick2-plugin is not installed. Package qml-module-qtquick2 is not installed. teamviewer-host depends on qtdeclarative5-controls-plugin (>= 5.2.1) | qml-module-qtquick-controls (>= 5.2.1); howev dpkg: error processing package teamviewer-host (--install): dependency problems - leaving unconfigured Errors were encountered while processing: teamviewer-host
Zut ! Il manque des dépendances ! Et le paquet ne s’installe pas On va forcer l’installation des paquets manquants : (voyez l’option -f sur cette page pour plus d’explications)
sudo apt-get -f install
pi@raspberrypi:~ $ sudo apt-get -f install Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Correction des dépendances... Fait Les paquets supplémentaires suivants seront installés : libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5opengl5 libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5sql5 libqt5sql5-sqlite libqt5webkit5 libqt5widgets5 libqt5x11extras5 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xkb1 libxkbcommon-x11-0 qml-module-qtquick-controls qml-module-qtquick-dialogs qml-module-qtquick-layouts qml-module-qtquick-privatewidgets qml-module-qtquick-window2 qml-module-qtquick2 qttranslations5-l10n Les NOUVEAUX paquets suivants seront installés : libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5opengl5 libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5sql5 libqt5sql5-sqlite libqt5webkit5 libqt5widgets5 libqt5x11extras5 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xkb1 libxkbcommon-x11-0 qml-module-qtquick-controls qml-module-qtquick-dialogs qml-module-qtquick-layouts qml-module-qtquick-privatewidgets qml-module-qtquick-window2 qml-module-qtquick2 qttranslations5-l10n 0 mis à jour, 27 nouvellement installés, 0 à enlever et 0 non mis à jour. 1 partiellement installés ou enlevés. Il est nécessaire de prendre 17,4 Mo dans les archives. Après cette opération, 70,6 Mo d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n]
Répondez O : Cette commande va forcer l’installation des dépendances nécessaires et vous pouvez ensuite relancer l’installation du paquet .deb. Cette fois ça devrait bien se passer
pi@raspberrypi:~ $ sudo dpkg -i teamviewer-host_armhf.deb
(Lecture de la base de données… 119449 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de teamviewer-host_armhf.deb …
Removed symlink /etc/systemd/system/multi-user.target.wants/teamviewerd.service.
Dépaquetage de teamviewer-host (11.0.63329) sur (11.0.63329) …
Paramétrage de teamviewer-host (11.0.63329) …
Paramétrage de l’installation
Sur le bureau de votre Raspberry Pi apparait cette fenêtre :
A moins que vous ne soyez pas d’accord avec les termes de la licence (ah bon, vous les lisez, vous ?) cliquez sur le bouton Accepter l’accord de licence.
Ceci entraîne l’affichage d’une icône TeamViewer dans la barre des tâches :
et l’affichage d’une fenêtre vous permettant d’autoriser les connexions distantes et vous donnant l’identifiant de votre Raspberry Pi ainsi que le mot de passe pour la connexion.
Vous noterez aussi la présence d’une nouvelle entrée de menu qui vous permettra de lancer TeamViewer :
A partir de ce moment votre Raspberry Pi est accessible par TeamViewer !
Accès depuis une machine windows
Sur la machine Windows il faudra installer dans un premier temps la version de TW correspondante.
Lancez TW :
Saisissez l’identifiant du RasPi et cliquez sur Connexion à un partenaire.
Saisissez maintenant le mot de passe que vous avait donné le RasPi lors du lancement de TW…
Vous voici connecté(e) au Rasberry Pi distant, dans la session en cours. C’est à dire que comme avec x11VNC toutes les actions (clavier/souris) réalisées sur une des machines est instantanément reproduite sur l’autre…
Accès depuis une machine Linux
Sur la machine Linux il faudra installer dans un premier temps la version de TW correspondante.
Lancez TW, les étapes pour se connecter sont exactement les mêmes que pour Windows (voir ci-dessus) :
Ici la connexion au Raspberry a été faite sur une machine sous Debian/LXDE.
Accès depuis un smartphone Android
Sur un smartphone Android il suffit d’installer l’application TeamViewer for Remote Control.
Une fois que c’est installé démarrez l’appli :
Cliquez sur Connecter (en bas à gauche de l’écran) puis renseignez l’ID du Raspberry Pi et son mot de passe (il vous est demandé quand vous validez l’ID)
Et ensuite…
Vous pouvez contrôler votre Raspberry Pi depuis votre smartphone
Combien ça coûte ?
Alors là c’est simple : TeamViewer est gratuit pour un usage personnel ! Ça veut dire que si vous voulez prendre la main sur le Raspberry Pi de votre cousin qui habite à 300 Km (bon, faut pas qu’il ait une bande passante de merde trop faible quand même) ça ne vous coutera rien…
Seules les entreprises doivent prendre un compte payant (c’est d’ailleurs ce qui permet à TW de fournir le service gratuitement aux particuliers…)
Et le transfert de fichiers ?
Bin… c’est ce qui a retardé la sortie de cet article. D’un autre côté ça m’a permis de vérifier que si on sollicite TeamViewer sur un sujet technique, on obtient une réponse.
Je n’arrivais à transférer les fichiers ni sous Windows, ni sous Debian !
La fenêtre apparaît mais la partie droite (le Raspberry Pi) reste désespérément vide. Allez un ticket ouvert chez TW !
et quelques jours plus tard
Bonjour M. ,
Je vous remercie pour votre message et l’intérêt que vous portez à TeamViewer.
Merci de nous avoir informé de ce problème. La situation a été vérifiée en interne, le transfert de fichier avec le Raspberry n’existe pas encore, la fonction devrait être donc grisée.
Cela devrait être corrigé dans le futur.
Vous souhaitant bonne réception et restant à votre disposition pour tout renseignement, je vous souhaite également une agréable journée.
Cordialement.
Romain
On devrait donc bénéficier de cette fonction dans le futur. Elle peut être utile pour récupérer à distance des logs ou des enregistrements de données…
Conclusion
Il y a encore d’autres fonctionnalités à explorer, par exemple créer un compte chez TW et enregistrer vos différentes machines… Mais je vous laisse bosser un peu aussi
Pour l’utilisation de TeamViewer sur un Raspbian Lite en mode headless, j’ai encore quelques soucis et j’ai contacté TeamViewer. Ça fera l’objet d’un prochain article…
Merci à doudy et Sylvain pour leurs interventions à propos de TeamViewer dans les commentaires de x11VNC ainsi qu’à Jean-Philippe (F5GKW) pour le relais du commentaire qu’il a laissé sur le blog de F8ASB :
En ce qui me concerne il manquait des dépendances (sur RPI3 et Jessie) donc :
sudo apt-get install libqt5gui5 libqt5widgets5 libqt5quick5 libqt5webkit5 libqt5x11extras5 qml-module-qtquick2
La résolution d’écran n’est pas terrible !
cela est dû au fait que si il n’y a pas de moniteur connecté ( ce qui est mon cas en utilisation à distance) le Raspi se met en mode basse résolution
Pour corriger cela , éditer le fichier /boot/config.txt et ajouter :
# forçage résolution sans écran pour teamviewer
hdmi_force_hotplug=1
hdmi_group=1
hdmi_mode=4
disable_overscan=1
vous allez voir,c’est plus confortable !
pour les divers modes HDMI (et vos propres essais ) je vous renvoie à :
https://www.raspberrypi.org/do
Sources
- https://www.teamviewer.com/fr/download/linux/
- https://download.teamviewer.com/download/linux/version_11x/teamviewer-host_armhf.deb
- https://downloadeu1.teamviewer.com/docs/fr/v11/TeamViewer11-Manual-Remote-Control-fr.pdf
- https://downloadeu2.teamviewer.com/docs/fr/TeamViewer-Security-Statement-fr.pdf