33. Le shell sécurisé : ssh

Ssh est un incontournable de la gestion sécurisée des machines. L’idée est simple : depuis un ordinateur, se connecter en ligne de commande sur un autre.

Utilisation

Après installation de ssh sur les deux ordinateurs, l’utilisation est simple :

ssh pi@ipordinateurdistant

où, « pi » est le nom de l’utilisateur sous lequel on veut se connecter et « ipordinateurdistant » l’adresse ip de l’ordinateur distant sur lequel on veut se connecter.

Suivant les cas, si vous avez autorisé une connexion avec un mot de passe, un mot de passe vous sera demandé, ou, si vous n’autorisez qu’une connexion par clé, une phrase de passe vous sera demandée.

Création des clés

Pour créer des clés privée et publique utilisables par ssh, il faut simplement lancer la commande :

ssh-keygen -t rsa

Ainsi, vous créerez une paire de clé publique-privée de type rsa, communément utilisé. Vous seront demandé le répertoire dans lequel les clés seront stockées et votre phrase de passe deux fois. Pour le répertoire de stockage, vous pouvez laisser le répertoire par défaut : « .ssh ». Quand cela est fini, vous retrouverez vos clés dans ce répertoire sous les noms « id_rsa » pour la clé privée et « id_rsa.pub » pour la clé publique. Id_rsa étant votre clé privée, elle ne doit jamais être communiquée à qui que ce soit.

Transfert de la clé publique

Pour la clé publique, il faut maintenant la transférer sur les ordinateurs sur lesquels vous voulez vous connecter. Pour cela, il vous faut un compte utilisateur valide sur l’ordinateur distant. Admettons que votre compte sur celui-ci se nomme « pi ». Le transfert de votre clé publique sur ce compte se fait de la manière suivante :

ssh-copy-id pi@ipordinateurdistant

Un avertissement vous sera alors donné vous demandant de confirmer que vous voulez réellement vous connecter sur cet ordinateur. Répondez par « yes ». Le mot de passe du compte pi vous sera alors demandé et après l’avoir validé, vous serez informé que votre clé publique a été ajoutée au trousseau de ce compte.

Vous pourrez alors utiliser ssh comme mentionné plus haut pour vous connecter à l’aide de votre phrase de passe.

Configuration

Alors depuis l’ordinateur sur lequel vous avez créé les clés vous pourrez vous connecter avec votre phrase de passe, parfaitement sécurisée. Mais avec un autre ordinateur, il est possible que vous puissiez vous connecter avec un mot de passe. Si c’est le cas, toute personne pourra tenter de se connecter en ssh à votre compte pi. Pour s’y connecter, il lui suffira de trouver votre mot de passe. Si ce n’est pas le cas, l’accès lui sera simplement refusé. L’ordinateur distant ne va donc alors accepter une connexion que si il sait que c’est vous. Pour cela, il a créé, lors de la transmission de votre clé publique un fichier des hôtes connus baptisé « known_host » et un autre fichier des clés authorisées « authorised_keys ». Ainsi, il est préférable, après avoir déposé sa clé publique, d’interdire les connexions par mot de passe. Cela se fait dans le fichier de l’ordinateur distant :

/etc/ssh/sshd_config

Vous trouverez dans ce fichier la ligne suivante :

#PasswordAuthentication yes

En mode root ou avec sudo, décommentez-la est mettez sa variable à no :

PasswordAuthentication no

Enregistrez et redémarrez ssh par :

systemctl restart ssh

Désormais l’ordinateur distant ne sera plus accessible qu’à travers une phrase de passe. Attention, cela pourrait signifier que certains utilisateurs sans clés qui se connectaient avec un mot de passe pourraient ne plus pouvoir utiliser ssh.

Dérogation de droits

SI vous voulez accorder à certains utilisateurs la possibilité de se connecter par mot de passe, alors que par défaut c’est l’authentification par phrase de passe qui doit être imposée, cela est faisable en ajoutant à la fin du fichier « sshd_config » :

Match user autreuser
    PasswordAuthentication yes

où « autreuser » est un utilisateur autorisé à utiliser une authentification par mot de passe. Attention, tout ce qui vient après la ligne « Match user autreuser » concernera l’utilisateur « autreuser ». On peut ainsi ajouter d’autres directives pour cet utilisateur spécifique en dessous de « Password… ».

Gemini

J’ai trop longtemps négligé l’importance du texte. Jeune j’ai été passionné de littérature. La science m’en a alors détourné. Paul Feyerabend m’ayant rappelé qu’elle était elle-même langage et Noam Shomsky ayant confirmé qu’il en était de même pour l’informatique, mes pratiques ont lentement dérivées vers le texte par la programmation, des cours de physiques en LaTeX et le un nouveau plaisir d’écrire en opposition radicale avec la période désagréable des vidéos-conférences. Tout alors m’a éloigné du monde des images à tel point que j’ai abandonné la télévision. Ce changement ne fut pas radical, car des années auparavant, j’avais déjà abandonné la voiture pour le vélo et je savais que le ralentissement de ses déplacements pouvait être très bénéfique. J’ai alors compris que le filtrage des informations par le texte pouvait l’être tout autant.

La découvert du groupe « rawtext.club » a donc été pour moi une véritable révélation. Toutes les valeurs des membres de ce groupe me correspondaient et comme ils proposaient de mettre de l’information sur le tout jeune Gemini, un autre web focalisé sur le texte, je me suis lancé dans l’aventure.

Le protocole

Gemini est un protocole, à l’instar d’http. Il s’agit d’accorder deux ordinateurs pour qu’il se comprennent et puissent se transmettre de l’information. Ainsi, quand vous utilisez « Hyper Text Transfer Protocol », soit http, vous utilisez un « un protocole de communication client-serveur développé pour le World Wide Web » (Wikipedia). Quand vous utilisez « Gemini », soit gemini, vous utilisez « un protocole de communication client-serveur. C’est un protocole de la couche application qui utilise le protocole TCP comme couche de transport. Il permet notamment d’accéder à des documents texte simples de type hypertexte. Les échanges entre le client et le serveur sont sécurisés à l’aide du protocole TLS. Le protocole est mis au point de manière collaborative mais n’est pas un standard internet » (Wikipedia).

« Les ressources Gemini sont identifiées au moyen d’URL dont le schéma est gemini://. Il est à noter que contrairement au protocole HTTPS qui possède un équivalent non chiffré (HTTP), le protocole Gemini ne définit volontairement pas d’équivalent non-chiffré.

La syntaxe des pages gemini, appelée Gemtext, est inspirée de celle de Markdown. »

Navigation

Pour visiter des sites gemini, on pourrait croire qu’il suffit de taper gemini:// dans la barre d’un navigateur. Mais le protocole n’étant pas standard, cela n’est pas possible aujourd’hui. Il faut un navigateur spécifique pour cela. Plusieurs solutions existent. Personnellement j’utilise « Amfora », un navigateur Gemini en mode ligne de commande. Une liste de clients gemini vous permettra de faire votre choix et de les installer. Outre Amphora, écrit en go, AV-98 écrit en python sont à tester. Sur la figure suivante, vous pouvez voir les deux navigateurs, Amfora à gauche, coloré sur fond noir et à droite dans une console transparente, AV-98 qui se superpose dans un style plus classique. Pour les navigateurs en mode graphique, Lagrange semble un bon choix.

Rawtext.club

Comme dit plus haut, ce groupe est plus qu’un hébergeur Gemini. Je vous conseille donc de vous y intéresser de plus près si vous aimez le texte et la philosophie des mouvement « LOW ».

À l’url :
gemini://rawtext.club
vous trouverez une description de ce « Slow social network », comme il se décrit lui-même.

À l’url :
gemini://rawtext.club/~guyotv
vous trouverez mon site gemini. Tout progressivement, celui-ci va prendre de l’importance et j’espère à terme pouvoir migrer entièrement vers celui-ci.

La tyrannie technologique

Critique de la société numérique

Édition l’échappée

On retrouve Célia Izoard, traductrice de l’incroyable petit ouvrage « La machine est ton seigneur et ton maître », dans ce document qui met en avant plusieurs constats, comme par exemple :

« Les sociétés traditionnelles nous apprennent […] à l’inverse que ce qui est primordial dans le don est l’implication sociale de l’acte en question. Le potlach – au même titre que d’autres formes traditionnelles d’échange (selon lesquelles être riche consiste à donner le plus possible aux autres) – est à des milliers de lieues de l’échange vanté à l’ère numérique. Le don est porteur d’une organisation sociale et économique bien plus égalitaire que la société du virtuel, puisqu’il implique non pas la gratuité, mais la réciprocité de l’échange. La gratuité libertaire des années 1970 était prônée en tant que vectrice d’égalité, non pas comme moyen d’inhiber la solidarité au sein des rapports de production. À l’inverse, l’effet principal des formes de partage via Internet est de promouvoir l’individualisme comme fondement du partage et de privilégier la connexion à des réseaux où surfent des inconnus avec qui nous sommes reliés plutôt que liés. Croire que l’essentiel dans l’échange réside dans le quantitatif (le décompte des articles obtenus) revient à reproduire la mentalité comptable et capitaliste de notre société […] »

p. 37 : le partage

dont l’analyse est subtile et permet parfois avec une grande acuité, de se rendre compte du détournement menteur de sens opéré par l’idéologie du monde actuel de la communication. Le texte ci-dessus est à mettre en relation avec l’analyse du rapport entre les gens qu’opère l’argent pour les extraire de la nécessite un lien social présenté dans « L’ordre de l’argent Critique de l’économie » de Nino Fournier aux éditions Liber et qui envisage l’abandon de celui-ci au profit de l’échange pour recréer du lien social.

Évidemment, on ne peut qu’être amené à réfléchir à la relation numérique que ces deux mondes utilisent et à l’hypothèse que c’est peut-être celle-ci qui détermine ontologiquement leurs dysfonctionnements. Le pas n’est pas franchi. Mais il constituerait une belle introduction à des philosophies à l’opposé des mathématiques actuelles dont les Big Data sont l’emblème représentatif.

Reste que d’autres constats sont tout aussi finement posés comme :

La diffusion massive des technologies ne peut pas être dissociée de la propagation d’un mode de vie fondé sur la vitesse, la consommation, l’accumulation et la toute-puissance.

P. 44 Pour une critique de la technologie

Un livre important donc, aux multiples facettes, qui sans tomber dans un excès fait d’affirmations triviales qui condamnerait jusqu’à sa mise en page, prend le parti aujourd’hui encore peu répandu de mettre en avant que le progrès n’existe pas et que l’opposition entre techniques du passé et techniques modernes est un non-sens.

Impuissance

Qui sont aujourd’hui les puissants ? Selon beaucoup, jouer un rôle dans la société passe par l’acquisition du pouvoir politique ou financier. Sans quoi, malgré une action quotidienne sur la réalité qui s’assimile à celle de Personne (j’aime à dire que mon nom est Personne), nous resterions impuissants à changer le monde.

Dans « Contre l’alternumérisme », Julia Laïne et Nicolas Alep, malgré des idées qui confinent au ridicule comme :

« … OpenStreetMap, projet « libre et ouvert » […] Cette fois-ci, pas de Google cars photographiant les rues, c’est l’affaire de bénévoles, et les données récoltées ne seront pas accaparée par une entreprise. Mais quelle différence pour l’utilisateur qui aura aliéné son sens de l’orientation à la machine ? Privé de sa capacité à s’orienter dans l’espace par lui-même, incapable de lire une carte [SIC] ou de refaire le chemin en sens inverse, l’humain diminué vivra-t-il mieux sa condition , sachant que la technologie en cause est transparente, libre, ouverte, agile et efficace ? »

Contre l’alternumérisme, pp. 89.90

en tirant sur une technologie qu’ils utilisent dans leur livre même, puisque la césure utilisée est visiblement celle d’un traitement de texte, citent très judicieusement Ivan Illich :

« Dans la tradition du monde occidental, j’ai carrément choisi, en raison de mes racines, la politique de l’impuissance. J’atteste de mon impuissance parce que je pense […] qu’il ne nous reste rien d’autre, et aussi parce que, pour le moment, je pourrais démontrer que nous ne pouvons rien faire. Aujourd’hui la politique focalise presque inévitablement notre attention sur des buts intermédiaires et nous cache ce à quoi nous devons dire non!… Comme il faut dire non, par exemple, à cette illusion qui consiste à croire que nous pouvons réellement intervenir dans certaines situations. »

Ivan illichm, cité par david cayley, entretiens avec ivan illich, saint-laurent, bellarmin, 1996, dans contre l’alternumérisme, p. 122

Si je place en exergue ce texte, c’est qu’il me permet de le sortir de son contexte pour le mettre en parallèle avec l’ouvrage fantastique :

Face à la puissance

Une histoire des énergies alternatives à l’âge industriel

François Jarrige Alexis Vrignon

Éditions la découverte, paris, 2020

Face à la puissance se trouve … l’impuissance. Il ne s’agit pas d’un constat, mais de la décision clairement assumée de construire un monde qui s’oppose à la puissance et recherche l’impuissance.

Dans « Nomade des mers » (arte editions), Correntin de Chatelperron, présente son « tour du monde des innovations » dont le choix est celui des LOW TECH. Son constat est clairement celui d’un physicien, puisqu’il dit qu’en terme de technologie, on parvient pratiquement toujours à trouver des solutions à bas coût énergétique, pour autant qu’on prenne le temps de bien y réfléchir. La puissance étant l’énergie divisée par le temps, le sens du mot LOW est donc évidemment celui de la puissance ou plutôt celui de l’impuissance. C’est ainsi avec une finesse éblouissante que Jarrige et Vrignon titrent « Face à la puissance », non pour en marteler les méfaits, mais pour en faire une alternative opposée au recours à la puissance de la technologie actuelle généralement vantée par les écoles d’ingénieurs.

L’impuissance constitue donc une alternative qui pour moi est clairement à privilégier, non à regrets, mais parce qu’elle est au cœur d’un éventuel changement de civilisation.

Librem 5 et convergence

L’idée de convergence existe depuis bien longtemps. Aujourd’hui, hormis le fait que l’architecture d’un téléphone n’est pas la même que celle d’un ordinateur de bureau, il est parfaitement envisageable de considérer qu’un téléphone puisse faire office d’ordinateur de bureau.

Cela fait maintenant plusieurs années que j’utilise un Raspberrypi, d’abord 3B+, aujourd’hui 4B+, comme poste de travail. Or, l’architecture du Raspberrypi est celle d’un téléphone. Mon raspberrypi est connecté à un écran tactile de 12,5 pouces et relié à un clavier bluetooth récupéré d’une ancienne tablette. Le système est Raspbian, dérivé de Debian.

Avec le Librem 5 en mode convergence, j’ai accès à un écran de 30 pouces simultanément à l’écran tactile du Librem, avec un clavier muni d’un touchpad et une souris, les deux sans fils. Tout cela est relié par l’intermédiaire d’un hub relié au Librem par un connecteur USBC et disposant d’une sortie HDMI pour connecter l’écran, de trois ports USB3 et d’une alimentation (aussi en USBC).

Convergence simple
Premier exemple de convergence.

Sur la capture d’écran ci-dessus se trouve le premier exemple de convergence. À gauche, se trouve l’écran tactile du Librem, avec les deux bandes noires permettant d’accéder au programmes (en bas) et aux différents réseaux et notifications (en haut). À droite, se trouve l’écran principal avec une image de fond prise par mes soins.

La gestion des écrans est intéressante, puisque c’est le bord commun aux deux écrans qui permet le passage du pointeur de la souris d’un écran à l’autre. Remarquez que l’écran tactile du Librem est parfaitement utilisable simultanément à l’utilisation de la souris. Remarquez aussi que la plupart du temps, le lancement d’une application depuis le librem provoquera son affichage sur le Librem, mais pas toujours. Or, en raison de l’adaptation des applications à l’écran du Librem, le bandeau haut de la fenêtre permettant sa saisie peut parfois ne pas être présent. Il peut donc être difficile de déplacer une fenêtre d’un écran à l’autre sans connaître quelques fonctionnalités de déplacement au clavier comme :

  • <SHIFT><WINDOW><Flèche droite ou gauche> pour déplacer la fenêtre qui a le focus d’un écran à l’autre,
  • <WINDOW><Flèche haut ou bas> pour maximiser ou afficher à la taille choisie la fenêtre,
  • <WINDOW><Flèche gauche ou droite> pour placer la fenêtre sur toute la moitié gauche ou droite de l’écran,
  • <WINDOW><A> pour ouvrir le lanceur d’application et
  • <WINDOW><S> pour ouvrir le sélecteur d’application.

Sur la seconde capture de l’écran, on peut voir qu’il est possible de placer l’écran du librem différemment et de lui donner un facteur de zoom particulier. Le panneau des préférences présenté permet aussi de choisir l’écran principal, c’est-à-dire l’écran sur lequel les menus (bandes noire en haut et en bas) seront affichés. Il permet aussi d’effectuer différents réglages propres à la configuration de chaque écran ou de choisir un clonage simple de l’écran du Librem sur l’autre écran. Enfin, il permet de couper l’écran secondaire après avoir remis les menus sur celui du Librem, pour permettre de le débrancher et quitter ainsi la convergence. Or, cela ne fonctionne pas toujours bien. Dans la moitié des cas, après avoir débranché l’écran secondaire, le Librem plante et redémarre. Il s’agit là d’un bug à corriger.

Convergence écran
Second exemple de convergence avec préférences de réglages des écrans.

Cela dit, la convergence fonctionne plutôt bien du point de vue des écrans et il devient vite extrêmement pratique de lancer des logiciels de manières tactile sur l’écran du Librem pour les utiliser sur l’autre écran.

Mais la convergence n’est pas qu’une affaire d’écran. C’est surtout un problème logiciel. Je présenterai dans un autre article, le cas de l’utilisation simultanée d’un logiciel de reconnaissance de caractères (gimagereader) et de LaTeX qui pourrait être considéré comme un exemple fort de convergence. Pour rester ici focalisé sur l’écran, il me faut évoquer les captures d’écrans.

Pour pouvoir rédiger cet article, il était nécessaire de pouvoir réaliser des captures d’écrans en mode convergence. Je m’attendais à des difficultés en raison de la présence des deux écrans, mais le problème s’est situé totalement ailleurs.

J’aime et utilise Gimp depuis toujours. Je l’utilise donc pour faire mes captures d’écran. Gimp n’est certainement pas un logiciel adapté à un téléphone et il n’est évidemment pas présent dans la logithèque de PureOS. Mais celle-ci n’est que la partie émergée de l’iceberg Debian. L’utilisation de la console est ici à privilégier. Avec quelques :

apt search terminator
apt search gimp

en utilisant le clavier disponible pour la console, on se rends compte qu’une grande partie des logiciels disponibles sous Debian le sont aussi sous PureOS. Je reparlerai dans un autre article des problèmes rencontrés pour installer certains logiciels comme Merkaartor ou biber. Ainsi, une ligne suffit pour se retrouver avec terminator et gimp :

sudo apt-get install terminator gimp

après éventuellement :

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Terminator est alors disponible (avec transparence, excusez du peu) et Gimp aussi.

MAIS, même si Gimp est parfaitement fonctionnel, impossible de réaliser une capture d’écran. Tout se passe apparemment correctement, mais l’image obtenue reste obstinément entièrement noire.

Comme ImageMagick (installé par défaut), par l’intermédiaire de son utilitaire import, permet de réaliser des captures d’écran, j’ai tenté :

import -pause 10 capture.png

et le résultat fut exactement le même qu’avec Gimp.

Il m’a fallu un certain temps et l’article https://puri.sm/posts/easy-librem-5-app-development-take-a-screenshot/ pour me rendre compte que le problème venait du serveur graphique.

Précisons que non seulement la carte graphique du Librem 5 est libre, mais que le serveur graphique n’est pas X11, classiquement utilisé sous Debian, mais Wayland (https://fr.wikipedia.org/wiki/Wayland). Ce serveur qui va probablement remplacer X11 est déjà présent sous Debian, mais pas installé par défaut. Comme il est semble-t-il plus performant et plus léger que X11, c’est lui qui a été embarqué sur le Librem 5. Or, toutes les applications ne fonctionnent pas bien avec lui.

Grim et capture d’écran

Ainsi, pour obtenir une copie d’écran sous Wayland, il faut utiliser un logiciel du nom de « grim ». Pour le faire simplement, en suivant l’article cité précédemment, il faut simplement installer grim et ce qu’il faut pour notifier l’utilisateur qu’une capture d’écran va être faite :

sudo apt-get install grim libnotify-bin notify-send

Puis, il faut créer un script, qu’on peut nommer « screenshot », contenant :

#!/bin/bash
SCREENSHOT="/home/purism/Pictures/$(date +%Y-%m-%d-%H%M%S).png"
notify-send -t 1000 screenshot "Taking a screenshot in 5 seconds"
sleep 5
grim "$SCREENSHOT"
notify-send screenshot "Screenshot stored at ${SCREENSHOT}"

dont le code est évident et qu’il ne faut pas oublier de rendre exécutable par :

chmod a+x /home/purism/bin/screenshot

On peut ensuite le lancer pour le tester en étant dans le répertoire dans lequel il se trouve par :

./screenshot

Et là, normalement vous devriez obtenir une belle copie des deux écrans simultanément dans le répertoire « Pictures ».

Finalement, on peut créer un lanceur permettant de réaliser une copie d’écran à partir du script « screenshot » en plaçant le fichier « screenshot.desktop » dans le répertoire du lien : /home/purism/.local/share/applications/screenshot.desktop. Il doit contenir :

[Desktop Entry]
Name=Screen Shot
Type=Application
Icon=applets-screenshooter
Exec=screenshot
Categories=Utility;

Ainsi, au prochain redémarrage du téléphone, apparaîtra une jolie petite icone dans les applications permettant de réaliser la capture d’écran.

Vous trouverez dans l’article mentionné ci-dessus, une amélioration de ce script permettant notamment de régler le délai avant que la capture soit réalisée.

Voilà pour cette première présentation de la convergence. Deux autres articles vous en diront plus en vous présentant la convergence liant caméra, reconnaissance de caractères et publication sous LaTeX.