phramusca

This is my homepage.

View on GitHub

Raspberry

Installation

Depuis un PC:

Configuration du Raspberry

Tunnel SSH pour VNC sur Raspberry Pi 5

Accès VNC chiffré et authentifié par clé SSH, sans mot de passe VNC.
Principe : wayvnc n’écoute que sur localhost du Pi ; TigerVNC passe par le tunnel SSH.

TigerVNC ──► localhost:5900 (PC) ──► tunnel SSH ──► localhost:5900 (Pi: wayvnc)

1. Configurer wayvnc côté Pi

Éditer /etc/wayvnc/config :

enable_auth=false
address=127.0.0.1
port=5900

Puis redémarrer le service :

sudo systemctl restart wayvnc

wayvnc n’est plus joignable depuis le réseau : seule une session SSH sur le Pi peut y accéder.

2. Créer le tunnel depuis le PC

/!\ Il faut avoir copié les clés ssh sur le pi avant de lancer cette commande

ssh -N -L 5900:localhost:5900 UTILISATEUR@ADRESSE_DU_PI

Laisser cette commande tourner dans un terminal.

3. Se connecter avec TigerVNC

Dans TigerVNC Viewer, se connecter à :

localhost:5900

Aucune authentification VNC n’est demandée : c’est la clé SSH qui joue ce rôle, et le trafic est chiffré de bout en bout.

4. Tunnel avec reconnexion automatique

Pour éviter de relancer la commande à chaque coupure (réseau, veille du Pi) ou redémarrage du PC

  1. Dans ~/.ssh/config du PC :

     Host rpi5-vnc
         HostName ADRESSE_DU_PI
         User UTILISATEUR
         ServerAliveInterval 30
         ServerAliveCountMax 3
         ExitOnForwardFailure yes
    
  2. Créer le fichier ~/.config/systemd/user/rpi5-vnc-tunnel.service

     [Unit]
     Description=Tunnel SSH VNC vers rpi5
     After=network-online.target
    
     [Service]
     ExecStart=/usr/bin/ssh -N -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -L 5900:localhost:5900 rpi5-vnc
     Restart=always
     RestartSec=5
    
     [Install]
     WantedBy=default.target
    
  3. Activer et lancer :

     systemctl --user daemon-reload
     systemctl --user enable --now rpi5-vnc-tunnel.service
    

    ServerAliveInterval détecte les connexions mortes en ~90 s et ferme le tunnel proprement au lieu de rester bloqué.

Commandes utiles:

systemctl --user status rpi5-vnc-tunnel    # état du tunnel
journalctl --user -u rpi5-vnc-tunnel -f   # logs en direct
systemctl --user stop rpi5-vnc-tunnel     # arrêter
systemctl --user disable rpi5-vnc-tunnel  # désactiver au démarrage

Le tunnel tourne en arrière-plan dès l’ouverture de session : TigerVNC se connecte simplement à localhost:5900, rien d’autre à faire.

Note : si la session SSH utilise une clé protégée par passphrase, ajouter un agent ssh (ssh-add) au démarrage de la session, ou une clé sans passphrase dédiée au tunnel (restrictive : restrict,command=echo dans authorized_keys du Pi).

5. Vérifications et dépannage

Problème Vérification
« Connection refused » dans TigerVNC Le tunnel tourne-t-il ? ssh -N -L ... doit rester ouvert
Tunnel se ferme aussitôt Port 5900 déjà utilisé en local : essayer -L 5901:localhost:5900 puis se connecter à localhost:5901
Écran noir / connexion qui se détache Écran HDMI du Pi : fixer une résolution dans raspi-config → Display Options → Screen Resolution
wayvnc injoignable sudo systemctl status wayvnc et ss -tlnp \| grep 5900 : doit écouter sur 127.0.0.1:5900

Récap sécurité

Mise à jour automatique

Paquet Debian apt-auto-update (recommandé)

Le projet apt-auto-update installe la commande apt-auto-update : même idée que l’ancien script (mise à jour + nettoyage), avec activation / désactivation de la planification et nettoyage à la suppression du paquet.

Détails : README du dépôt apt-auto-update.

Ancienne méthode : script utilisateur + crontab

Un petit script pour faire la maintenance du système (mises à jour et nettoyage des paquets inutilisés), par exemple ~/Documents/scripts/Update.sh :

#!/bin/bash

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get autoremove -y
sudo apt-get autoclean
sudo apt-get clean

echo "-------------------- Press enter to exit --------------------"
read -r

Raccourci bureau (exemple) : fichier Update & clean.desktop :

[Desktop Entry]
Type=Application
Name=Update & clean
Exec=lxterminal -e ~/Documents/scripts/Update.sh
Icon=/usr/share/icons/AdwaitaLegacy/48x48/legacy/software-update-available.png
Terminal=false

Automatiser avec crontab utilisateur

crontab -e

Exemple (tous les jours à 4h) :

0 4 * * * /bin/bash ~/Documents/scripts/Update.sh >> ~/Documents/scripts/Update.log 2>&1

Rappel des champs cron :

┌───────── minute (0 - 59)
│ ┌─────── heure (0 - 23)
│ │ ┌───── jour du mois (1 - 31)
│ │ │ ┌─── mois (1 - 12)
│ │ │ │ ┌─ jour de la semaine (0 - 7) (dimanche = 0 ou 7)
│ │ │ │ │
* * * * * commande à exécuter

man 5 crontab pour la suite.

Logs rotatifs (méthode manuelle)

Fichier /etc/logrotate.d/Update (adapter le chemin du .log) :

/home/UTILISATEUR/Documents/scripts/Update.log {
    daily
    rotate 30
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
}

Test : sudo logrotate -f /etc/logrotate.d/Update

Rafraichir l’icône de mise à jour

TODO: Comment rafraichir l’icone de mise à jour ??

Hotspot WEP pour Nintendo DS

La Nintendo DS ne supporte que les clefs WEP. La freebox ne permet plus de configurer le WiFi avec ce format.

Il me faut donc créer un hotspot. Heureusement mon Raspberry a le Wifi disponible puisque connecté en filaire.

📌 Notes

Prérequis

sudo apt install hostapd dnsmasq iproute2 iw

Script du hotspot

Utilisation:

Usage: ./HotspotWEP.sh {start|stop|status|restart}

Commandes:
  start   - Démarrer le hotspot WEP
  stop    - Arrêter le hotspot
  status  - Afficher l'état du hotspot
  restart - Redémarrer le hotspot

Le script: HotspotWEP.sh