<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Self-Hosting on Blog de Midiland</title><link>https://midiland.fr/tags/self-hosting/</link><description>Recent content in Self-Hosting on Blog de Midiland</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><lastBuildDate>Mon, 12 Oct 2026 16:40:46 +0200</lastBuildDate><atom:link href="https://midiland.fr/tags/self-hosting/index.xml" rel="self" type="application/rss+xml"/><item><title>Nextcloud Dream : transforme ta TV Android en cadre photo connecté (sans Google)</title><link>https://midiland.fr/articles/nextcloud-dream-transforme-ta-tv-android-en-cadre-photo-connect%C3%A9-sans-google/</link><pubDate>Wed, 07 Oct 2026 20:00:00 +0100</pubDate><guid>https://midiland.fr/articles/nextcloud-dream-transforme-ta-tv-android-en-cadre-photo-connect%C3%A9-sans-google/</guid><description>&lt;img src="https://midiland.fr/nextcloud-dream/cover.webp" alt="Featured image of post Nextcloud Dream : transforme ta TV Android en cadre photo connecté (sans Google)" /&gt;&lt;p&gt;Ma TV passe beaucoup plus de temps allumée sur l&amp;rsquo;économiseur d&amp;rsquo;écran que sur un film. Pendant des années, c&amp;rsquo;était Backdrop, l&amp;rsquo;économiseur de Google : des paysages, des œuvres d&amp;rsquo;art, et en option… tes photos Google Photos.&lt;/p&gt;
&lt;p&gt;Sauf que mes photos, elles ne sont plus chez Google depuis longtemps : elles sont sur mon homelab dans un Nextcloud.&lt;/p&gt;
&lt;p&gt;Je me suis donc lancé avec Claude Code pour développer mon propre économiseur d&amp;rsquo;écran. Il s&amp;rsquo;appelle &lt;strong&gt;Nextcloud Dream&lt;/strong&gt;, il est open source, et aujourd&amp;rsquo;hui je vais te montrer comment l&amp;rsquo;installer et le configurer sur ta box Android TV. Chez moi, ça tourne sur une Mi Box S, qui n&amp;rsquo;est clairement pas une bête de course.&lt;/p&gt;
&lt;h2 id="ce-que-ça-fait"&gt;Ce que ça fait
&lt;/h2&gt;&lt;p&gt;En deux mots : tu mets des photos dans un dossier Nextcloud, et ta TV les affiche en diaporama :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fondu enchaîné&lt;/strong&gt; entre les photos, toutes les 20 secondes (réglable).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Date et lieu de la photo&lt;/strong&gt; en bas de l&amp;rsquo;écran, lus directement dans les infos de la photo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Live Photos&lt;/strong&gt; : Si une photo est une Live Photo (iPhone Live Photo ou Pixel Motion Photo), le clip vidéo silencieux se joue une fois avant de revenir à la photo fixe. Tu peux désactiver cette option dans les paramètres si tu préfères.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;heure&lt;/strong&gt; dans le coin, qui se décale légèrement chaque minute pour ne pas marquer les écrans OLED.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ça marche même quand le serveur est coupé&lt;/strong&gt; : les dernières photos vues restent en cache sur la box.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aucune limite de photos&lt;/strong&gt; : elles sont téléchargées au fur et à mesure, en version réduite par Nextcloud.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="les-prérequis"&gt;Les prérequis
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Une box ou TV Android TV&lt;/strong&gt; en Android 9 minimum (Mi Box S, Chromecast avec Google TV, TV Sony, Philips…).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un serveur Nextcloud&lt;/strong&gt; accessible en HTTPS avec un certificat valide.&lt;/li&gt;
&lt;li&gt;Optionnel mais vivement conseillé :
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Un ordinateur avec ADB&lt;/strong&gt; : il est fourni avec Android Studio, ou en version légère avec les &lt;a class="link" href="https://developer.android.com/tools/releases/platform-tools" target="_blank" rel="noopener"
 &gt;platform-tools&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;application Google TV&lt;/strong&gt; sur ton téléphone. Tu vas comprendre pourquoi à l&amp;rsquo;étape 4.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="étape-1--préparer-nextcloud"&gt;Étape 1 : Préparer Nextcloud
&lt;/h2&gt;&lt;p&gt;Commence par créer un dossier pour les photos de l&amp;rsquo;économiseur, par exemple &lt;code&gt;/Photos/ScreenSaver&lt;/code&gt;. Les sous-dossiers sont pris en compte.&lt;/p&gt;
&lt;p&gt;Ensuite, on crée un &lt;strong&gt;mot de passe d&amp;rsquo;application&lt;/strong&gt;. C&amp;rsquo;est un mot de passe dédié à la box, que tu peux révoquer à tout moment sans toucher à ton mot de passe principal :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Dans Nextcloud, va dans &lt;strong&gt;Paramètres personnels → Sécurité&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Tout en bas, dans &lt;strong&gt;Appareils &amp;amp; sessions&lt;/strong&gt;, donne un nom (« TV salon » par exemple).&lt;/li&gt;
&lt;li&gt;Clique sur &lt;strong&gt;Créer un nouveau mot de passe d&amp;rsquo;application&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

 &lt;div class="admonition info"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Info&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;Personnellement, je suis même allé plus loin : j&amp;rsquo;ai créé un utilisateur dédié dans Nextcloud pour ça, qui partage le dossier ScreenSaver en écriture avec ma compagne et moi. Comme ça, si le token venait à fuir, ce serait potentiellement moins grave.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;&lt;h2 id="étape-2--installer-lapp"&gt;Étape 2 : Installer l&amp;rsquo;app
&lt;/h2&gt;&lt;p&gt;Tu as plusieurs options pour installer l&amp;rsquo;APK. Voici les méthodes, de la plus accessible à la plus bidouilleuse :&lt;/p&gt;
&lt;h3 id="méthode-1--avec-downloader-la-plus-simple"&gt;Méthode 1 : Avec Downloader (la plus simple)
&lt;/h3&gt;&lt;p&gt;Idéal si tu veux éviter les câbles et les lignes de commande.&lt;/p&gt;
&lt;p&gt;Installe l&amp;rsquo;appli Downloader depuis le Play Store sur ta box :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ouvre le Google Play Store.&lt;/li&gt;
&lt;li&gt;Cherche « Downloader » (l&amp;rsquo;icône est un nuage avec une flèche vers le bas).&lt;/li&gt;
&lt;li&gt;Installe-la.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Télécharge l&amp;rsquo;APK :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ouvre Downloader.&lt;/li&gt;
&lt;li&gt;Dans l&amp;rsquo;URL, entre :
&lt;code&gt;https://github.com/midiland/nextcloud-dream/releases/latest/download/nextcloud-dream.apk&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Appuie sur Go.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Installe l&amp;rsquo;APK :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Une fois le téléchargement terminé, clique sur Install.&lt;/li&gt;
&lt;li&gt;Si un message d&amp;rsquo;avertissement apparaît (« Installation de sources inconnues »), coche « Toujours autoriser » et valide.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lance l&amp;rsquo;app :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Une fois installée, ouvre Nextcloud Dream depuis le menu de ta TV.&lt;/li&gt;
&lt;li&gt;(On configurera tout ça à l&amp;rsquo;étape 3 !)&lt;/li&gt;
&lt;/ul&gt;

 &lt;div class="admonition info"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Info&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;Si tu as un message te disant impossible d&amp;rsquo;installer une source inconnue : va dans Paramètres → Sécurité → Sources inconnues et active l&amp;rsquo;option pour l&amp;rsquo;app Downloader.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;&lt;h3 id="méthode-2--avec-une-clé-usb"&gt;Méthode 2 : Avec une clé USB
&lt;/h3&gt;&lt;p&gt;Parfait si ta box n&amp;rsquo;a pas accès à Internet ou si tu préfères éviter les apps tierces.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Matériel nécessaire :&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Une clé USB (formatée en FAT32 ou exFAT).&lt;/li&gt;
&lt;li&gt;Un ordinateur (Windows/macOS/Linux) pour copier le fichier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Étapes :&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Télécharge l&amp;rsquo;APK sur ton PC :
&lt;ul&gt;
&lt;li&gt;Va sur la page des releases GitHub.&lt;/li&gt;
&lt;li&gt;Télécharge le fichier .apk (ex: Nextcloud-Dream-v1.0.0.apk).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Copie l&amp;rsquo;APK sur ta clé USB :
&lt;ul&gt;
&lt;li&gt;Branche la clé USB à ton PC.&lt;/li&gt;
&lt;li&gt;Copie-colle le fichier .apk à la racine de la clé.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Branche la clé à ta box :
&lt;ul&gt;
&lt;li&gt;Insère la clé dans un port USB de ta TV/box.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Installe l&amp;rsquo;APK depuis la clé :
&lt;ul&gt;
&lt;li&gt;Sur ta TV, ouvre l&amp;rsquo;explorateur de fichiers (ex: Files by Google).&lt;/li&gt;
&lt;li&gt;Navigue jusqu&amp;rsquo;à ta clé USB et clique sur le fichier .apk.&lt;/li&gt;
&lt;li&gt;Valide l&amp;rsquo;installation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="méthode-3--avec-adb-pour-les-aventuriers-du-terminal"&gt;Méthode 3 : Avec ADB (pour les aventuriers du terminal)
&lt;/h3&gt;&lt;p&gt;La méthode la plus « pro », mais aussi la plus risquée si tu fais n&amp;rsquo;importe quoi. Suis les étapes à la lettre !&lt;/p&gt;

 &lt;div class="admonition warning"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path d="M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Avertissement&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;ADB permet d&amp;rsquo;installer des apps sans passer par l&amp;rsquo;écran de ta TV, mais c&amp;rsquo;est aussi une porte ouverte aux pirates si tu ne fais pas gaffe. Ne partage jamais ton code ADB avec un inconnu, et désactive le débogage USB quand tu as fini !&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;&lt;p&gt;&lt;strong&gt;Prérequis :&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un PC (Windows/macOS/Linux) avec ADB installé.&lt;/li&gt;
&lt;li&gt;Le débogage USB activé sur ta box (voir ci-dessous).&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;APK téléchargé (comme dans la Méthode 2).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Étapes :&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Active le mode développeur sur ta box :
&lt;ul&gt;
&lt;li&gt;Va dans Paramètres → À propos.&lt;/li&gt;
&lt;li&gt;Clique 7 fois sur « Numéro de build » jusqu&amp;rsquo;à voir le message « Vous êtes développeur ! ».&lt;/li&gt;
&lt;li&gt;Retourne dans Paramètres → Système → Options pour les développeurs.&lt;/li&gt;
&lt;li&gt;Active :
&lt;ul&gt;
&lt;li&gt;Débogage USB&lt;/li&gt;
&lt;li&gt;Installation via USB (si l&amp;rsquo;option existe)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Trouve l&amp;rsquo;adresse IP de ta box :
&lt;ul&gt;
&lt;li&gt;Va dans Paramètres → Réseau et Internet → Wi-Fi.&lt;/li&gt;
&lt;li&gt;Note l&amp;rsquo;adresse IP (ex: 192.168.1.42).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Branche ta box à ton PC en USB (optionnel mais recommandé) :
&lt;ul&gt;
&lt;li&gt;Si tu veux éviter les problèmes de réseau, branche ta box à ton PC avec un câble USB-C/USB-A.&lt;/li&gt;
&lt;li&gt;Sinon, utilise le Wi-Fi (mais c&amp;rsquo;est moins stable).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Installe l&amp;rsquo;APK via ADB :
&lt;ul&gt;
&lt;li&gt;Ouvre un terminal (Linux/macOS) ou l&amp;rsquo;invite de commandes (Windows).&lt;/li&gt;
&lt;li&gt;Tape la commande suivante pour vérifier que ta box est détectée :
&lt;ul&gt;
&lt;li&gt;En filaire (USB) :
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;adb devices&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Installe l&amp;rsquo;APK :
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;adb install /chemin/vers/Nextcloud-Dream.apk&lt;/code&gt; (Remplace &lt;code&gt;/chemin/vers/&lt;/code&gt; par le chemin réel du fichier sur ton PC.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Si tu es en Wi-Fi, utilise plutôt :
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;adb connect 192.168.1.42:5555&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;adb install Nextcloud-Dream.apk&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Désactive le débogage USB quand c&amp;rsquo;est fait :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Va dans Options pour les développeurs et désactive Débogage USB.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="étape-3--configurer-lapplication"&gt;Étape 3 : Configurer l&amp;rsquo;application
&lt;/h2&gt;&lt;p&gt;Ouvre &lt;strong&gt;Nextcloud Dream&lt;/strong&gt; depuis la liste des applications et remplis les champs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;URL du serveur&lt;/strong&gt; : &lt;code&gt;https://cloud.ton-domaine.fr&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identifiant&lt;/strong&gt; et &lt;strong&gt;mot de passe d&amp;rsquo;application&lt;/strong&gt; (celui de l&amp;rsquo;étape 1)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dossier de photos&lt;/strong&gt; : &lt;code&gt;/Photos/ScreenSaver&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;et si tu veux, la durée d&amp;rsquo;affichage, l&amp;rsquo;horloge, la date et le lieu, la taille du cache…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Capture d’écran de configuration" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) calc(75vw - 70px), (max-width: 1279px) calc(50vw - 100px), (max-width: 1535px) calc(60vw - 104px), 818px" src="https://midiland.fr/nextcloud-dream/01-ecran-configuration.webp" srcset="https://midiland.fr/nextcloud-dream/01-ecran-configuration_hu_3729c55591d27c9b.webp 420w, https://midiland.fr/nextcloud-dream/01-ecran-configuration_hu_1ca9adf29badcd2b.webp 820w, https://midiland.fr/nextcloud-dream/01-ecran-configuration_hu_fcd9ec0a38bf1ee0.webp 1240w, https://midiland.fr/nextcloud-dream/01-ecran-configuration_hu_a2d2b6c42cac5299.webp 1640w" width="1920"&gt;
&lt;/p&gt;
&lt;p&gt;Taper une URL et un mot de passe de 29 caractères avec la télécommande, c&amp;rsquo;est le genre de chose qui fait regretter d&amp;rsquo;être né. C&amp;rsquo;est là que l&amp;rsquo;application &lt;strong&gt;Google TV sur ton téléphone&lt;/strong&gt; sauve des vies : elle se connecte à la box et te laisse taper avec le clavier du téléphone.&lt;/p&gt;
&lt;p&gt;Si tu as suivi l&amp;rsquo;installation par ADB tu peux utiliser :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# sélectionne le champ sur la TV, puis :&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell input text &lt;span class="s2"&gt;&amp;#34;https://cloud.ton-domaine.fr&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Clique sur &lt;strong&gt;Tester la connexion&lt;/strong&gt; : tu dois voir « Connexion réussie : XX photos trouvées ».&lt;/p&gt;
&lt;p&gt;Ensuite &lt;strong&gt;Enregistrer et synchroniser&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capture d’écran de connexion réussie" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) calc(75vw - 70px), (max-width: 1279px) calc(50vw - 100px), (max-width: 1535px) calc(60vw - 104px), 818px" src="https://midiland.fr/nextcloud-dream/02-connexion-reussie.webp" srcset="https://midiland.fr/nextcloud-dream/02-connexion-reussie_hu_d8b9b127ac2469b3.webp 420w, https://midiland.fr/nextcloud-dream/02-connexion-reussie_hu_24fcd21ee27baabb.webp 820w, https://midiland.fr/nextcloud-dream/02-connexion-reussie_hu_b9e3c2af242503.webp 1240w, https://midiland.fr/nextcloud-dream/02-connexion-reussie_hu_9da1ffe003933565.webp 1640w" width="1920"&gt;
&lt;/p&gt;
&lt;h2 id="étape-4--activer-léconomiseur-décran"&gt;Étape 4 : Activer l&amp;rsquo;économiseur d&amp;rsquo;écran
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Va dans &lt;strong&gt;Paramètres → Préférences de l&amp;rsquo;appareil → Économiseur d&amp;rsquo;écran&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Choisis &lt;strong&gt;Nextcloud Dream&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Règle le délai dans &lt;strong&gt;Délai avant activation&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Démarrer maintenant&lt;/strong&gt; pour admirer le résultat.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="Capture d’écran des réglages de l’économiseur" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) calc(75vw - 70px), (max-width: 1279px) calc(50vw - 100px), (max-width: 1535px) calc(60vw - 104px), 818px" src="https://midiland.fr/nextcloud-dream/03-reglages-economiseur.webp" srcset="https://midiland.fr/nextcloud-dream/03-reglages-economiseur_hu_5fb4d3de8f4a69cb.webp 420w, https://midiland.fr/nextcloud-dream/03-reglages-economiseur_hu_ce235b77a0879e8e.webp 820w, https://midiland.fr/nextcloud-dream/03-reglages-economiseur_hu_f35501fcebe9ac07.webp 1240w, https://midiland.fr/nextcloud-dream/03-reglages-economiseur_hu_ac9f5d9359d526d8.webp 1640w" width="1920"&gt;

&lt;img alt="Capture d’écran du choix de l’économiseur" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) calc(75vw - 70px), (max-width: 1279px) calc(50vw - 100px), (max-width: 1535px) calc(60vw - 104px), 818px" src="https://midiland.fr/nextcloud-dream/04-choix-economiseur.webp" srcset="https://midiland.fr/nextcloud-dream/04-choix-economiseur_hu_cca11946ace8c922.webp 420w, https://midiland.fr/nextcloud-dream/04-choix-economiseur_hu_6489191e2e25638a.webp 820w, https://midiland.fr/nextcloud-dream/04-choix-economiseur_hu_407ed696a2e200d0.webp 1240w, https://midiland.fr/nextcloud-dream/04-choix-economiseur_hu_3a0e22bc69e25360.webp 1640w" width="1920"&gt;
&lt;/p&gt;
&lt;p&gt;Et voilà : laisse ta TV tranquille quelques minutes et tes photos défilent.&lt;/p&gt;

 &lt;div class="admonition note"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"&gt;&lt;path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Note&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;Certaines versions d&amp;rsquo;Android TV et de Google TV cachent les économiseurs tiers dans ce menu. Dans ce cas, on passe en force avec ADB :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell settings put secure screensaver_enabled &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell settings put secure screensaver_components fr.midiland.nextclouddream/.dream.NextcloudDreamService
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;&lt;h2 id="dépannage"&gt;Dépannage
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;« Aucune photo disponible »&lt;/strong&gt; : le serveur est injoignable et le cache est vide, ou le dossier est vide. Le bouton &lt;strong&gt;Tester la connexion&lt;/strong&gt; te dira lequel des deux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Erreur d&amp;rsquo;authentification&lt;/strong&gt; : vérifie l&amp;rsquo;identifiant et le mot de passe d&amp;rsquo;application. C&amp;rsquo;est bien l&amp;rsquo;identifiant Nextcloud, pas forcément ton adresse e-mail.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dossier introuvable&lt;/strong&gt; : le chemin est relatif à la racine de tes fichiers Nextcloud. Et si c&amp;rsquo;est un dossier partagé, relis le conseil de l&amp;rsquo;étape 1.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pas de lieu sous la date&lt;/strong&gt; : la photo n&amp;rsquo;a tout simplement pas de coordonnées GPS. C&amp;rsquo;est le cas de la plupart des appareils photo (mon vieux Sony, par exemple). Les photos de smartphone en ont presque toujours.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;économiseur ne se lance pas&lt;/strong&gt; : vérifie qu&amp;rsquo;il est bien sélectionné avec &lt;code&gt;adb shell dumpsys dreams | grep mCurrentDreamName&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="images-de-nextcloud-dream"&gt;Images de Nextcloud Dream
&lt;/h2&gt;&lt;p&gt;&lt;img alt="Capture d’écran avec la date et le lieu" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) calc(75vw - 70px), (max-width: 1279px) calc(50vw - 100px), (max-width: 1535px) calc(60vw - 104px), 818px" src="https://midiland.fr/nextcloud-dream/05-diaporama-date-et-lieu.webp" srcset="https://midiland.fr/nextcloud-dream/05-diaporama-date-et-lieu_hu_1188f635f4286b8e.webp 420w, https://midiland.fr/nextcloud-dream/05-diaporama-date-et-lieu_hu_9b1b0957f4b79e25.webp 820w, https://midiland.fr/nextcloud-dream/05-diaporama-date-et-lieu_hu_f415d04536964b63.webp 1240w, https://midiland.fr/nextcloud-dream/05-diaporama-date-et-lieu_hu_4cc2cf45b5cfb2d.webp 1640w" width="1920"&gt;

&lt;img alt="Capture d’écran avec une photo verticale" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) calc(75vw - 70px), (max-width: 1279px) calc(50vw - 100px), (max-width: 1535px) calc(60vw - 104px), 818px" src="https://midiland.fr/nextcloud-dream/06-diaporama-photo-verticale.webp" srcset="https://midiland.fr/nextcloud-dream/06-diaporama-photo-verticale_hu_922e2b42fa415478.webp 420w, https://midiland.fr/nextcloud-dream/06-diaporama-photo-verticale_hu_bd529f9234d1cea7.webp 820w, https://midiland.fr/nextcloud-dream/06-diaporama-photo-verticale_hu_139c3250e4cffb11.webp 1240w, https://midiland.fr/nextcloud-dream/06-diaporama-photo-verticale_hu_21f5927689c774fd.webp 1640w" width="1920"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capture d’écran sans GPS dans la photo" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) calc(75vw - 70px), (max-width: 1279px) calc(50vw - 100px), (max-width: 1535px) calc(60vw - 104px), 818px" src="https://midiland.fr/nextcloud-dream/07-diaporama-sans-gps.webp" srcset="https://midiland.fr/nextcloud-dream/07-diaporama-sans-gps_hu_55dfa9da19761db3.webp 420w, https://midiland.fr/nextcloud-dream/07-diaporama-sans-gps_hu_9d7a0a6d2a0db7a9.webp 820w, https://midiland.fr/nextcloud-dream/07-diaporama-sans-gps_hu_a520dccb766ea1e2.webp 1240w, https://midiland.fr/nextcloud-dream/07-diaporama-sans-gps_hu_cd4f223ae3c3c579.webp 1640w" width="1920"&gt;
&lt;/p&gt;
&lt;h2 id="comment-ça-marche-en-coulisses"&gt;Comment ça marche, en coulisses
&lt;/h2&gt;&lt;p&gt;Pour les curieux. Toutes les 6 heures, l&amp;rsquo;application récupère la liste des photos via WebDAV, puis lit seulement le début de chaque fichier pour en extraire la date et les coordonnées GPS (pas besoin de télécharger 6 Mo pour lire trois lignes d&amp;rsquo;EXIF). Le nom du lieu est trouvé par le géocodeur d&amp;rsquo;Android.&lt;/p&gt;
&lt;p&gt;Pendant le diaporama, chaque photo est demandée à Nextcloud &lt;strong&gt;en version déjà réduite&lt;/strong&gt; (environ 1 Mo au lieu de 5 à 10), avec toujours une photo d&amp;rsquo;avance pour que le fondu ne soit jamais en retard. Les dernières photos vues restent dans un petit cache de 50 Mo. Si ton serveur fait la sieste, l&amp;rsquo;économiseur continue avec elles et retente sa chance toutes les 5 minutes.&lt;/p&gt;
&lt;p&gt;Résultat : la box ne télécharge presque rien, et ton serveur n&amp;rsquo;est pas sollicité inutilement la nuit.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Je suis assez content du résultat : ma TV affiche enfin mes photos, sans passer par Google, et ça tient sur une Mi Box dans seulement 2 Mo d&amp;rsquo;application.&lt;/p&gt;
&lt;p&gt;Redécouvrir au hasard une photo de vacances d&amp;rsquo;il y a cinq ans, avec la date et le lieu en prime, c&amp;rsquo;est franchement sympa.&lt;/p&gt;
&lt;p&gt;Le code est sur &lt;a class="link" href="https://github.com/midiland/nextcloud-dream" target="_blank" rel="noopener"
 &gt;GitHub&lt;/a&gt;, sous licence Apache 2.0. Si tu as une idée, un bug ou une box sur laquelle ça ne marche pas, ouvre une issue : je suis curieux de savoir sur quoi tu vas le faire tourner.&lt;/p&gt;</description></item><item><title>La forteresse SSH : Configurer son accès distant</title><link>https://midiland.fr/articles/la-forteresse-ssh-configurer-son-acc%C3%A8s-distant/</link><pubDate>Fri, 26 Dec 2025 11:47:00 +0100</pubDate><guid>https://midiland.fr/articles/la-forteresse-ssh-configurer-son-acc%C3%A8s-distant/</guid><description>&lt;img src="https://midiland.fr/ssh/cover.png" alt="Featured image of post La forteresse SSH : Configurer son accès distant" /&gt;&lt;p&gt;Ça fait plusieurs années que j&amp;rsquo;ai un serveur avec un OpenSSH exposé sur internet, et les premières fois quand je suis allé voir dans les logs, j&amp;rsquo;ai halluciné devant le nombre de tentatives de connexion. Et oui, il y a des bots sur le net qui passent leur temps à faire du brute-force sur les ports SSH. C&amp;rsquo;est pour ça que je te propose un petit tuto où je vais t&amp;rsquo;exposer ma configuration SSH. Je ne suis pas professionnel, mais je pense que c&amp;rsquo;est le minimum. Si tu as d&amp;rsquo;autres tips, n&amp;rsquo;hésite pas à me contacter, je mettrai l&amp;rsquo;article à jour si tes tips me semblent pertinents.&lt;/p&gt;
&lt;h2 id="pourquoi-openssh"&gt;Pourquoi OpenSSH
&lt;/h2&gt;&lt;p&gt;Quand on travaille sur un serveur à distance, on a besoin de l&amp;rsquo;administrer. En général, sur un serveur avec un OS qui mérite de porter ce nom, on peut faire tourner un serveur SSH.&lt;/p&gt;
&lt;p&gt;Grâce au serveur SSH, tu pourras te connecter au terminal du serveur distant : cela permet d&amp;rsquo;administrer le serveur.&lt;/p&gt;
&lt;p&gt;La configuration par défaut du serveur SSH installé par défaut sur le serveur Debian 13 (stable depuis le 15 novembre 2025, avec OpenSSH) peut être durcie.&lt;/p&gt;
&lt;h2 id="les-mises-à-jour"&gt;Les mises à jour
&lt;/h2&gt;&lt;p&gt;Première mesure de sécurité : il faut mettre à jour régulièrement le serveur OpenSSH. C&amp;rsquo;est l&amp;rsquo;un des serveurs les plus utilisés, ce qui en fait une cible privilégiée pour les attaquants.&lt;/p&gt;
&lt;p&gt;Récemment, plusieurs vulnérabilités ont été découvertes :&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://nvd.nist.gov/vuln/detail/CVE-2025-26465" target="_blank" rel="noopener"
 &gt;CVE-2025-26465&lt;/a&gt; : Cette vulnérabilité permet à un attaquant d&amp;rsquo;usurper l&amp;rsquo;identité, ce qui peut conduire à des attaques de type homme-du-milieu. La mise à jour vers la version 9.9p2 a permis de résoudre ce problème.&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://nvd.nist.gov/vuln/detail/CVE-2025-26466" target="_blank" rel="noopener"
 &gt;CVE-2025-26466&lt;/a&gt; : Une faille dans sshd expose OpenSSH à une attaque par déni de service (DoS). La mise à jour vers la version 9.9p2 a permis de résoudre ce problème.&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://nvd.nist.gov/vuln/detail/CVE-2024-6387" target="_blank" rel="noopener"
 &gt;CVE-2024-6387&lt;/a&gt; (RegreSSHion) : Cette vulnérabilité critique, signalée le 1er juillet 2024, affecte les systèmes Linux basés sur glibc et permet l&amp;rsquo;exécution de code à distance (RCE) non authentifiée en tant que root. La mise à jour vers la version 9.8p1 a corrigé cette vulnérabilité.&lt;/p&gt;
&lt;p&gt;Ces exemples illustrent qu&amp;rsquo;il faut maintenir OpenSSH à jour pour se protéger contre des vulnérabilités critiques. Négliger les mises à jour expose ton infrastructure à des risques majeurs. Il est donc recommandé de surveiller régulièrement les annonces de sécurité et d&amp;rsquo;appliquer les correctifs dès leur disponibilité.&lt;/p&gt;
&lt;h2 id="les-prérequis"&gt;Les prérequis
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Un serveur sous Linux (Debian, Ubuntu, Rocky&amp;hellip;) ou OpenBSD.&lt;/li&gt;
&lt;li&gt;Un accès root ou sudo sur ce serveur.&lt;/li&gt;
&lt;li&gt;Un client SSH sur ton PC (Linux, Mac ou Windows avec WSL/PuTTY).&lt;/li&gt;
&lt;/ul&gt;

 &lt;div class="admonition warning"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path d="M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Avertissement&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;Exposer un serveur sur Internet n&amp;rsquo;est jamais anodin. Une mauvaise configuration, c&amp;rsquo;est la porte ouverte aux bots, aux scripts malveillants et aux maux de tête.&lt;/p&gt;
&lt;p&gt;Note bien ceci : Toutes les infos que je vais te transmettre sont basées sur mes configurations personnelles. Je suis un passionné, pas un expert certifié en cybersécurité. Prends ça comme un partage d&amp;rsquo;expérience, pas comme un audit blindé par l&amp;rsquo;ANSSI !&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;&lt;h2 id="étape-1--création-dune-clé-ssh"&gt;Étape 1 : Création d&amp;rsquo;une clé SSH
&lt;/h2&gt;&lt;p&gt;Si tu te logues encore avec un mot de passe classique &lt;code&gt;password1234&lt;/code&gt;, arrête tout. On va passer aux clés cryptographiques. C&amp;rsquo;est beaucoup plus robuste.&lt;/p&gt;
&lt;p&gt;Sur ton PC local (pas le serveur), ouvre ton terminal préféré et lance :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh-keygen -t ed25519 -C &lt;span class="s2"&gt;&amp;#34;jon@doe.fr&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Note : On utilise l&amp;rsquo;algo ed25519 car il est plus moderne, plus rapide et plus sûr que le vieux RSA.&lt;/p&gt;
&lt;p&gt;Tu peux définir le nom de la clé, dans mon exemple &lt;code&gt;~/.ssh/id_ed25519_vps&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Choix du chemin de la clé lors du ssh-keygen" class="gallery-image" data-flex-basis="3516px" data-flex-grow="1465" height="104" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) calc(75vw - 70px), (max-width: 1279px) calc(50vw - 100px), (max-width: 1535px) calc(60vw - 104px), 818px" src="https://midiland.fr/ssh/b1286149723bbe6e7e64fccd4a945c45.png" srcset="https://midiland.fr/ssh/b1286149723bbe6e7e64fccd4a945c45_hu_e461a882d1de4d63.webp 420w, https://midiland.fr/ssh/b1286149723bbe6e7e64fccd4a945c45_hu_68ddd66ffa6f6093.webp 820w, https://midiland.fr/ssh/b1286149723bbe6e7e64fccd4a945c45_hu_b1f4b7bffc0307e9.webp 1240w" width="1524"&gt;
&lt;/p&gt;
&lt;p&gt;Tu peux ajouter une passphrase, elle te sera demandée à chaque utilisation&lt;/p&gt;
&lt;p&gt;&lt;img alt="Saisie de la passphrase protégeant la clé privée" class="gallery-image" data-flex-basis="2899px" data-flex-grow="1207" height="126" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) calc(75vw - 70px), (max-width: 1279px) calc(50vw - 100px), (max-width: 1535px) calc(60vw - 104px), 818px" src="https://midiland.fr/ssh/adec41edbb6c7205139212180be83ad1.png" srcset="https://midiland.fr/ssh/adec41edbb6c7205139212180be83ad1_hu_26a24009fd0ba208.webp 420w, https://midiland.fr/ssh/adec41edbb6c7205139212180be83ad1_hu_571b0d4d44b0c726.webp 820w, https://midiland.fr/ssh/adec41edbb6c7205139212180be83ad1_hu_66c4571c329702d8.webp 1240w" width="1522"&gt;
&lt;/p&gt;

 &lt;div class="admonition info"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Info&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;Mets une passphrase ! Si on te vole ton PC portable non verrouillé, ta clé privée sera compromise. Avec une passphrase, le voleur ne pourra rien en faire.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;&lt;p&gt;La clé se trouve dans ton dossier &lt;code&gt;home&lt;/code&gt;, dans le sous-dossier &lt;code&gt;.ssh&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Une fois générée, ta clé est dans le dossier &lt;code&gt;.ssh&lt;/code&gt; de ton dossier personnel. Il faut maintenant envoyer la partie « publique » sur ton serveur :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh-copy-id -i ~/.ssh/id_ed25519_vps.pub user@ip-du-serveur
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="étape-2--configuration-dopenssh"&gt;Étape 2 : Configuration d&amp;rsquo;OpenSSH
&lt;/h2&gt;&lt;p&gt;Maintenant que ta clé est en place, on passe aux choses sérieuses sur le serveur. Le fichier de config se trouve dans &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Tu peux l&amp;rsquo;ouvrir avec ton éditeur favori : &lt;code&gt;vim&lt;/code&gt; pour les Jedi, &lt;code&gt;nano&lt;/code&gt; pour les Padawans.&lt;/p&gt;
&lt;p&gt;Voici les paramètres à changer ou ajouter :&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Paramètre&lt;/th&gt;
					&lt;th&gt;Valeur recommandée&lt;/th&gt;
					&lt;th&gt;Explication&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;PermitRootLogin&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;no&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Indispensable. On ne se connecte jamais directement en root. Tu te connectes avec ton user, puis tu fais &lt;code&gt;sudo&lt;/code&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;PasswordAuthentication&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;no&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;On désactive les mots de passe. Clés SSH obligatoires !&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Port&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;2222&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Changer le port 22 par défaut réduit considérablement le bruit dans les logs (les bots tapent surtout le 22). Ce n&amp;rsquo;est pas de la « vraie » sécurité, mais ça soulage.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;PubkeyAuthentication&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;yes&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Assure que l&amp;rsquo;authentification par clé est active.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ChallengeResponseAuthentication&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;no&lt;/code&gt; (optionnel selon distro)&lt;/td&gt;
					&lt;td&gt;Désactive PAM pour limiter l&amp;rsquo;auth via password.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;AllowAgentForwarding&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;no&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Bloque le relais d&amp;rsquo;agent (sauf si tu sais exactement pourquoi tu en as besoin).&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;PermitTunnel&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;no&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Désactive la possibilité de créer des tunnels réseau via SSH pour limiter les abus.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;X11Forwarding&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;no&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Pas de transfert d&amp;rsquo;interface graphique (inutile sur un serveur et vecteur d&amp;rsquo;attaque).&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;MaxAuthTries&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Au bout de 3 essais ratés, on coupe. Pas de temps à perdre.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ClientAliveCountMax&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Ferme la connexion après 3 requêtes sans réponse.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ClientAliveInterval&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;60&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Si la connexion reste sans réponse pendant 60 secondes, elle est coupée.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# --- Sécurisation OpenSSH by Midiland ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Port personnalisé&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Port &lt;span class="m"&gt;2222&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Authentification&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PermitRootLogin no
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PasswordAuthentication no
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PubkeyAuthentication yes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ChallengeResponseAuthentication no
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrictions de forwarding&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AllowAgentForwarding no
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PermitTunnel no
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;X11Forwarding no
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Tentatives &amp;amp; timeout&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MaxAuthTries &lt;span class="m"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ClientAliveInterval &lt;span class="m"&gt;60&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ClientAliveCountMax &lt;span class="m"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="vérification-et-application"&gt;Vérification et application
&lt;/h3&gt;&lt;p&gt;Avant de relancer le service, on vérifie toujours (au risque de tout casser) que la syntaxe est bonne :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sshd -t
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si la commande ne renvoie rien, c&amp;rsquo;est gagné. Si elle râle, corrige les erreurs indiquées.&lt;/p&gt;
&lt;p&gt;Ensuite, on redémarre le service :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart sshd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;div class="admonition caution"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path d="M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Attention&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;Ne ferme &lt;strong&gt;JAMAIS&lt;/strong&gt; ta session SSH actuelle après avoir redémarré le service SSH.
Ouvre un nouveau terminal et essaie de te connecter avec ta nouvelle config (nouveau port, clé SSH).&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;&lt;p&gt;Commande de test :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/id_ed25519 -p &lt;span class="m"&gt;2222&lt;/span&gt; user@ip-du-serveur
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si ça marche, bravo ! Si ça échoue, tu as toujours ta première fenêtre ouverte pour corriger le tir sans t&amp;rsquo;être enfermé dehors.&lt;/p&gt;
&lt;h2 id="configuration-des-ciphers-et-algorithmes-pour-openssh"&gt;Configuration des Ciphers et algorithmes pour OpenSSH
&lt;/h2&gt;&lt;p&gt;Pour ceux qui veulent la ceinture et les bretelles, on peut forcer OpenSSH à n&amp;rsquo;utiliser que des algorithmes de chiffrement ultra-robustes et récents.&lt;/p&gt;
&lt;p&gt;Attention : Cette config peut bloquer la connexion depuis de très vieux clients SSH.&lt;/p&gt;
&lt;p&gt;Dans le fichier &lt;code&gt;/etc/ssh/sshd_config.d/ciphers.conf&lt;/code&gt;, il faut le créer s&amp;rsquo;il n&amp;rsquo;existe pas.&lt;/p&gt;
&lt;p&gt;Ce bloc restreint les algorithmes autorisés aux plus modernes et sûrs, selon les recommandations de &lt;a class="link" href="https://www.ssh-audit.com/hardening_guides.html" target="_blank" rel="noopener"
 &gt;ssh-audit.com&lt;/a&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;KexAlgorithms&lt;/code&gt;&lt;/strong&gt; : échanges de clés (Key Exchange) — on garde les courbes elliptiques récentes (Curve25519, sntrup761) et les groupes Diffie-Hellman solides.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ciphers&lt;/code&gt;&lt;/strong&gt; : algorithmes de chiffrement symétrique — ChaCha20-Poly1305 et AES en mode GCM/CTR uniquement.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;MACs&lt;/code&gt;&lt;/strong&gt; : codes d&amp;rsquo;authentification de message — HMAC-SHA2 et UMAC en mode « encrypt-then-MAC » (&lt;code&gt;-etm&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;HostKeyAlgorithms&lt;/code&gt;&lt;/strong&gt; et &lt;strong&gt;&lt;code&gt;PubkeyAcceptedAlgorithms&lt;/code&gt;&lt;/strong&gt; : types de clés de serveur et de client acceptés — Ed25519 en priorité, RSA 3072 bits minimum.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict key exchange, cipher, and MAC algorithms, as per sshaudit.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# hardening guide.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;KexAlgorithms sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,gss-curve25519-sha256-,diffie-hellman-group16-sha512,gss-group16-sha512-,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-gcm@openssh.com,aes128-ctr
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HostKeyAlgorithms sk-ssh-ed25519-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RequiredRSASize &lt;span class="m"&gt;3072&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CASignatureAlgorithms sk-ssh-ed25519@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GSSAPIKexAlgorithms gss-curve25519-sha256-,gss-group16-sha512-
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HostbasedAcceptedAlgorithms sk-ssh-ed25519-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,ssh-ed25519,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-256
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PubkeyAcceptedAlgorithms sk-ssh-ed25519-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,ssh-ed25519,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-256
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Un petit redémarrage :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart sshd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Tu peux même aller frimer en testant ton serveur sur &lt;a class="link" href="https://www.ssh-audit.com/" target="_blank" rel="noopener"
 &gt;ssh-audit.com&lt;/a&gt; pour voir ta note.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Résultat de l’audit ssh-audit.com après durcissement de la configuration" class="gallery-image" data-flex-basis="923px" data-flex-grow="384" height="499" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) calc(75vw - 70px), (max-width: 1279px) calc(50vw - 100px), (max-width: 1535px) calc(60vw - 104px), 818px" src="https://midiland.fr/ssh/dad531e8a3232bc46dccc3fe3ca62311.png" srcset="https://midiland.fr/ssh/dad531e8a3232bc46dccc3fe3ca62311_hu_cc7294702e06338c.webp 420w, https://midiland.fr/ssh/dad531e8a3232bc46dccc3fe3ca62311_hu_d9aba65c193ab0bf.webp 820w, https://midiland.fr/ssh/dad531e8a3232bc46dccc3fe3ca62311_hu_271246ce53a1ef17.webp 1240w, https://midiland.fr/ssh/dad531e8a3232bc46dccc3fe3ca62311_hu_dccfc2176a87bacf.webp 1640w" width="1920"&gt;
&lt;/p&gt;
&lt;h2 id="dépannage-oups-je-suis-bloqué-"&gt;Dépannage (Oups, je suis bloqué !)
&lt;/h2&gt;
 &lt;div class="admonition question"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Tu as redémarré le service et tu ne peux plus te connecter ?&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;Pas de panique (enfin, un peu quand même).&lt;/p&gt;
&lt;p&gt;→ &lt;strong&gt;Vérifie ton pare-feu&lt;/strong&gt; : tu as oublié d&amp;rsquo;ouvrir le nouveau port (2222) ! Chez ton hébergeur, autorise le port &lt;code&gt;2222/tcp&lt;/code&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;&lt;h2 id="conclusion"&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Et voilà ! Tu as maintenant un serveur OpenSSH aux petits oignons. La surface d&amp;rsquo;attaque est réduite drastiquement : plus de mot de passe, plus de root direct, port changé et crypto renforcée. Les bots vont se casser les dents dessus.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est une première étape essentielle. Pour aller plus loin, je te conseille d&amp;rsquo;installer Fail2Ban qui se chargera de bannir automatiquement les IPs des petits malins qui insisteraient un peu trop, on le fera sûrement dans un autre tuto.&lt;/p&gt;
&lt;p&gt;Si tu as d&amp;rsquo;autres recommandations, envoie-moi un &lt;a class="link" href="mailto:contact@midiland.fr" &gt;mail&lt;/a&gt; ou un pouet sur &lt;a class="link" href="https://framapiaf.org/@midiland" target="_blank" rel="noopener"
 &gt;Mastodon&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>