SSH pour Radioamateurs

SSH pour Radioamateurs

Commandes essentielles pour le contrôle à distance de vos stations, VPN et infrastructures radio

Pourquoi SSH pour les radioamateurs ?

Le protocole SSH (Secure Shell) est devenu incontournable pour les radioamateurs modernes. Que ce soit pour contrôler un transceiver à distance, gérer un serveur de modes numériques, configurer un VPN pour accéder à votre station depuis n’importe où, ou maintenir un hotspot DMR, SSH est l’outil de choix.

Cette page rassemble les commandes SSH essentielles, avec des exemples concrets adaptés à nos usages radioamateurs.

Connexion SSH de base

ssh f4hxn@ station.fr Tunnel SSH sécurisé Port 22 (ou personnalisé) Station F4HXN Poste Opérateur Station Radio

Connexion simple

La commande de base pour se connecter à votre station ou serveur distant :

ssh utilisateur@adresse_ip

Exemple :

ssh f4hxn@192.168.1.100
ssh pi@station-radio.f4hxn.fr

Connexion avec port personnalisé

Si vous avez changé le port SSH par défaut (22) pour des raisons de sécurité :

ssh -p 2222 utilisateur@adresse_ip

Connexion avec clé SSH

La méthode la plus sécurisée, particulièrement recommandée pour les accès VPN :

ssh -i ~/.ssh/id_ed25519 utilisateur@adresse_ip

Transfert de fichiers

.adi .log Logs & Config SCP Transfer scp fichier.adi pi@station:/logs/ /home/pi/logs/ Poste local Serveur distant 75%

SCP – Copier un fichier vers le serveur

Idéal pour transférer vos fichiers de configuration, logs ADIF, ou images SSTV :

scp fichier.txt utilisateur@serveur:/chemin/destination/

Exemple radioamateur :

scp qso_log.adi pi@station-dmr:/home/pi/logs/
scp config_wsjt.ini f4hxn@192.168.1.100:/home/f4hxn/.config/

SCP – Récupérer un fichier depuis le serveur

scp utilisateur@serveur:/chemin/fichier.txt ./

Exemple :

scp pi@hotspot-dmr:/var/log/mmdvm.log ~/Bureau/

SCP – Copier un dossier complet (récursif)

scp -r dossier/ utilisateur@serveur:/destination/

Exemple :

scp -r ~/configs_radio/ pi@station:/home/pi/backup/

Authentification par clés SSH (Recommandé)

Pourquoi utiliser des clés SSH ?

Les clés SSH sont beaucoup plus sécurisées que les mots de passe :

  • Immunité aux attaques par force brute : une clé ed25519 de 256 bits est pratiquement incassable
  • Pas de saisie de mot de passe : connexion automatique une fois configurée
  • Idéal pour les scripts : automatisation sans interaction
  • Révocable facilement : supprimez une clé sans changer tous vos mots de passe
  • Une clé pour plusieurs serveurs : propagez votre clé publique partout

Étape 1 : Générer une paire de clés sur votre ordinateur

Sur votre PC/Mac/Linux, ouvrez un terminal et générez votre paire de clés :

Option recommandée : ed25519 (moderne, rapide, sécurisé)

ssh-keygen -t ed25519 -C "f4hxn@station-radio"

Alternative : RSA 4096 bits (compatible avec les vieux systèmes)

ssh-keygen -t rsa -b 4096 -C "f4hxn@station-radio"

Réponses aux questions :

Enter file in which to save the key (/home/you/.ssh/id_ed25519): [ENTRÉE]
Enter passphrase (empty for no passphrase): [Tapez une passphrase forte]
Enter same passphrase again: [Retapez la passphrase]

La passphrase : C’est une protection supplémentaire pour votre clé privée. Même si quelqu’un vole votre fichier id_ed25519, il ne pourra pas l’utiliser sans la passphrase. Choisissez-en une forte ! (ou laissez vide pour l’automatisation, mais c’est moins sécurisé).

Résultat : Deux fichiers créés dans ~/.ssh/ :

id_ed25519 → Clé PRIVÉE (à protéger absolument !)
id_ed25519.pub → Clé PUBLIQUE (peut être partagée)

Étape 2 : Copier la clé publique sur le serveur distant

Maintenant, il faut installer votre clé publique sur les serveurs auxquels vous voulez vous connecter.

Méthode automatique (la plus simple)

# Pour ed25519
ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@serveur

# Exemples concrets :
ssh-copy-id -i ~/.ssh/id_ed25519.pub pi@192.168.1.100
ssh-copy-id -i ~/.ssh/id_ed25519.pub f4hxn@station-radio.f4hxn.fr
ssh-copy-id -i ~/.ssh/id_ed25519.pub pi@hotspot-dmr.local

Vous devrez entrer le mot de passe SSH une dernière fois. Après ça, plus besoin !

Méthode manuelle (si ssh-copy-id n’existe pas)

# Afficher votre clé publique
cat ~/.ssh/id_ed25519.pub

# Copier la sortie, puis se connecter au serveur
ssh utilisateur@serveur

# Sur le serveur : créer le dossier .ssh
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# Ajouter votre clé dans authorized_keys
nano ~/.ssh/authorized_keys
# Collez votre clé publique, sauvegardez (Ctrl+X, Y, Entrée)

# Permissions correctes
chmod 600 ~/.ssh/authorized_keys

Méthode en une ligne (pour les pros)

cat ~/.ssh/id_ed25519.pub | ssh utilisateur@serveur "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Étape 3 : Tester la connexion par clé

Testez que tout fonctionne correctement :

# Connexion avec votre clé
ssh -i ~/.ssh/id_ed25519 utilisateur@serveur

# Exemples :
ssh -i ~/.ssh/id_ed25519 pi@192.168.1.100
ssh -i ~/.ssh/id_ed25519 f4hxn@station-radio.f4hxn.fr

Si vous avez mis une passphrase, on vous la demandera. C’est normal !

Si ça fonctionne sans demander le mot de passe SSH du serveur → C’est bon !

Succès ! Vous êtes maintenant connecté avec votre clé SSH. La connexion est sécurisée et vous n’avez plus besoin de taper le mot de passe du serveur.

Étape 4 : Simplifier avec ~/.ssh/config

Pour ne plus avoir à taper -i ~/.ssh/id_ed25519 à chaque fois :

# Éditez votre fichier de configuration SSH local
nano ~/.ssh/config

# Ajoutez vos serveurs :
Host station
    HostName 192.168.1.100
    User f4hxn
    IdentityFile ~/.ssh/id_ed25519
    Port 22

Host hotspot-dmr
    HostName hotspot-dmr.local
    User pi
    IdentityFile ~/.ssh/id_ed25519

Host sdr-remote
    HostName sdr.f4hxn.fr
    User sdruser
    IdentityFile ~/.ssh/id_ed25519
    Port 2222

Maintenant, connectez-vous simplement avec :

ssh station
ssh hotspot-dmr
ssh sdr-remote

Astuce radioamateur : Créez des alias pour tous vos équipements !
ssh station → Station principale QTH
ssh portable → Station portable/mobile
ssh dmr → Hotspot DMR
ssh repeater → Relais VHF/UHF
ssh sdr → Serveur WebSDR
ssh aprs → iGate APRS

Étape 5 : Désactiver l’authentification par mot de passe (optionnel mais recommandé)

ATTENTION : Ne faites ceci qu’après avoir vérifié que la connexion par clé fonctionne sur TOUS vos appareils (PC, laptop, smartphone, etc.) ! Sinon vous risquez de vous bloquer l’accès.

Une fois que tout fonctionne, sécurisez votre serveur en désactivant les mots de passe :

# Sur le SERVEUR (pas sur votre PC)
sudo nano /etc/ssh/sshd_config

# Modifiez ou ajoutez ces lignes :
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM no

# Sauvegardez (Ctrl+X, Y, Entrée)

# Redémarrez le service SSH
sudo systemctl restart sshd

# Ou sur certains systèmes :
sudo service ssh restart

Résultat : Votre serveur n’accepte plus que les connexions par clé SSH. Les robots qui tentent de deviner des mots de passe sont maintenant bloqués. Votre station est beaucoup plus sécurisée !

Cas pratique : Configuration complète d’une station radioamateur

Scénario : Vous avez un Raspberry Pi qui contrôle votre transceiver et vous voulez y accéder depuis votre PC.

Sur votre PC :
# 1. Générer les clés
ssh-keygen -t ed25519 -C "f4hxn-station"

# 2. Copier sur le Raspberry Pi
ssh-copy-id -i ~/.ssh/id_ed25519.pub pi@192.168.1.100

# 3. Configurer l'alias
echo "Host station" >> ~/.ssh/config
echo "    HostName 192.168.1.100" >> ~/.ssh/config
echo "    User pi" >> ~/.ssh/config
echo "    IdentityFile ~/.ssh/id_ed25519" >> ~/.ssh/config

# 4. Se connecter simplement
ssh station
Sur le Raspberry Pi (optionnel) :
# Désactiver l'authentification par mot de passe
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart sshd

Terminé ! Votre station est maintenant accessible en tapant simplement ssh station

Cas d’usage spécifiques

Contrôle Radio à Distance via SSH + VPN WSJT-X Opérateur En déplacement VPN Tunnel WireGuard / OpenVPN 14.074 Pi4 USB WAN Station QTH À la maison Ports redirigés : 4532 (rigctld) 5900 (VNC) 8073 (WebSDR) Commande : ssh -L 4532:localhost:4532 f4hxn@station.vpn
Contrôle d’un transceiver via VPN

Accès à votre station depuis l’extérieur :

ssh -L 4532:localhost:4532 f4hxn@station.vpn

Redirige le port Hamlib (rigctld) vers votre PC local

Tunnel VNC pour interface graphique

Accéder à distance à WSJT-X, fldigi, etc. :

ssh -L 5900:localhost:5900 pi@station-radio

Puis connectez votre client VNC à localhost:5900

Accès web à distance (Pi-Star, DV Dashboard)

Tunnel SSH pour interfaces web locales :

ssh -L 8080:localhost:80 pi@pistar.local

Accédez ensuite à http://localhost:8080

Stream audio distant (WebSDR, modes numériques)

Rediriger l’audio ou les données :

ssh -L 7355:localhost:7355 user@websdr-server

Port utilisé par certains serveurs WebSDR

Commandes avancées

Exécuter une commande à distance

Lancer une commande sans ouvrir de session interactive :

ssh utilisateur@serveur "commande"

Exemples radioamateurs :

ssh pi@hotspot "sudo systemctl restart mmdvmhost"
ssh f4hxn@station "cat /var/log/wsjtx.log | tail -20"
ssh pi@sdr "rtl_test -t"

Connexion persistante avec écran (screen)

Garder un processus actif même après déconnexion (idéal pour direwolf, wsjtx-cli, etc.) :

ssh utilisateur@serveur
screen -S radio_session
# lancer votre application
# Ctrl+A puis D pour détacher
# Plus tard : screen -r radio_session pour revenir

SSHFS – Monter un dossier distant

Accéder aux fichiers distants comme s’ils étaient locaux :

sshfs utilisateur@serveur:/chemin/distant ~/point_montage/

Exemple :

sshfs pi@station:/home/pi/logs ~/station_logs/

Pour démonter :

fusermount -u ~/station_logs/

Proxy SOCKS pour navigation sécurisée

Utiliser votre station comme proxy (utile en déplacement) :

ssh -D 8080 utilisateur@station

Configurez ensuite votre navigateur pour utiliser localhost:8080 comme proxy SOCKS5

Configuration ~/.ssh/config

Simplifier vos connexions

Créez des alias pour vos stations fréquemment utilisées :

# Fichier ~/.ssh/config

Host station
    HostName 192.168.1.100
    User f4hxn
    Port 22
    IdentityFile ~/.ssh/id_ed25519

Host hotspot-dmr
    HostName hotspot.local
    User pi
    IdentityFile ~/.ssh/id_rsa_pistar

Host sdr-remote
    HostName sdr.f4hxn.fr
    User sdruser
    Port 2222
    LocalForward 8073 localhost:8073

Ensuite, connectez-vous simplement avec :

ssh station
ssh hotspot-dmr
ssh sdr-remote

Conseils de sécurité pour radioamateurs

Authentification SSH par Clés PRIVÉE ~/.ssh/id_ed25519 Client SSH 1. Clé pub 2. Challenge 3. Signature Authentifié PUBLIQUE authorized_keys Serveur SSH Pas de mot de passe Automatisation Clés révocables Très sécurisé Passphrase optionnelle Anti brute-force Connexion rapide
1. Utilisez l’authentification par clés SSH

L’authentification par clés est beaucoup plus sécurisée que les mots de passe. Une clé SSH ed25519 de 256 bits est pratiquement impossible à craquer par force brute.

Étape 1 : Générer une paire de clés sur votre PC

# Génération d'une clé ed25519 (recommandé)
ssh-keygen -t ed25519 -C "f4hxn@station-radio"

# Ou RSA 4096 bits si ed25519 n'est pas supporté
ssh-keygen -t rsa -b 4096 -C "f4hxn@station-radio"

Choisissez une passphrase solide pour protéger votre clé privée

Les fichiers créés : ~/.ssh/id_ed25519 (privée) et ~/.ssh/id_ed25519.pub (publique)

Étape 2 : Copier la clé publique sur le serveur

# Méthode automatique (recommandée)
ssh-copy-id -i ~/.ssh/id_ed25519.pub pi@192.168.1.100

# Méthode manuelle si ssh-copy-id n'existe pas
cat ~/.ssh/id_ed25519.pub | ssh pi@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Étape 3 : Tester la connexion par clé

ssh -i ~/.ssh/id_ed25519 pi@192.168.1.100

Étape 4 : Désactiver l’authentification par mot de passe

ATTENTION : Ne faites ceci qu’après avoir vérifié que la connexion par clé fonctionne !

# Sur le serveur, éditez la configuration SSH
sudo nano /etc/ssh/sshd_config

# Modifiez ou ajoutez ces lignes :
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM no

# Redémarrez le service SSH
sudo systemctl restart sshd

Conseil radioamateur : Gardez une session SSH ouverte pendant que vous testez la nouvelle configuration. Si quelque chose ne fonctionne pas, vous pourrez revenir en arrière sans être bloqué !

2. Changez le port SSH par défaut

Le port 22 est constamment scanné par des robots. Changer de port réduit drastiquement le nombre de tentatives d’intrusion automatiques dans vos logs.

Configuration du nouveau port

# Sur le serveur, éditez la configuration
sudo nano /etc/ssh/sshd_config

# Modifiez la ligne Port (décommentez si nécessaire)
Port 2222

# Redémarrez SSH
sudo systemctl restart sshd

Connexion avec le nouveau port

# Connexion directe
ssh -p 2222 pi@station-radio.f4hxn.fr

# Ou ajoutez dans ~/.ssh/config :
Host station
    HostName station-radio.f4hxn.fr
    Port 2222
    User pi

Pare-feu : n’oubliez pas d’autoriser le nouveau port !

# Avec UFW (Ubuntu/Debian)
sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp # Supprimez l'ancien port
sudo ufw enable

# Avec iptables
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT

Conseil : Choisissez un port entre 1024 et 65535. Évitez les ports courants (8080, 3389, etc.). Pour les radioamateurs : 7300, 14074, ou 28074 peuvent être des choix mnémotechniques !

3. Utilisez un VPN pour l’accès distant

Plutôt que d’exposer SSH directement sur Internet, créez un tunnel VPN crypté. C’est la méthode recommandée pour accéder à votre station depuis l’extérieur.

Option 1 : WireGuard (recommandé pour les radioamateurs)

# Installation sur Raspberry Pi / Debian
sudo apt update
sudo apt install wireguard

# Génération des clés
wg genkey | tee privatekey | wg pubkey > publickey

# Configuration serveur : /etc/wireguard/wg0.conf
[Interface]
PrivateKey = CLÉ_PRIVÉE_SERVEUR
Address = 10.0.0.1/24
ListenPort = 51820

[Peer]
PublicKey = CLÉ_PUBLIQUE_CLIENT
AllowedIPs = 10.0.0.2/32

# Activation
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0

Une fois connecté au VPN, vous accédez à votre station comme si vous étiez sur le réseau local :

# Connexion normale via l'IP VPN
ssh pi@10.0.0.1

# Accès à votre transceiver via Hamlib
ssh -L 4532:localhost:4532 pi@10.0.0.1

# Interface web Pi-Star
http://10.0.0.1

Option 2 : OpenVPN (alternative classique)

# Installation simplifiée avec PiVPN
curl -L https://install.pivpn.io | bash

# Création d'un profil client
pivpn add -n f4hxn-laptop

# Le fichier .ovpn est créé dans ~/ovpns/

Avantages VPN :
• SSH non exposé directement sur Internet
• Accès à tous vos services locaux (WebSDR, Pi-Star, etc.)
• Chiffrement de bout en bout
• Pas besoin d’ouvrir 10 ports différents sur votre box

4. Fail2ban pour bloquer les attaques

Fail2ban surveille vos logs et bannit automatiquement les adresses IP qui font trop de tentatives de connexion échouées. Indispensable si votre SSH est exposé sur Internet !

Installation

# Installation
sudo apt update
sudo apt install fail2ban

# Démarrage automatique
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Configuration pour SSH

# Créez un fichier de configuration local
sudo nano /etc/fail2ban/jail.local

# Contenu du fichier :
[DEFAULT]
bantime = 3600 # 1 heure de bannissement
findtime = 600 # Fenêtre de détection (10 min)
maxretry = 3 # 3 échecs maximum
destemail = f4hxn@example.com
sendername = Fail2Ban-Station
action = %(action_mwl)s # Bannir + email

[sshd]
enabled = true
port = 2222 # Votre port SSH personnalisé
logpath = /var/log/auth.log
maxretry = 3

# Redémarrez fail2ban
sudo systemctl restart fail2ban

Commandes utiles

# Statut général
sudo fail2ban-client status

# Statut SSH spécifique
sudo fail2ban-client status sshd

# Débannir une IP (si vous vous êtes bloqué !)
sudo fail2ban-client set sshd unbanip 192.168.1.50

# Voir les IP bannies
sudo iptables -L -n | grep DROP

Astuce : Ajoutez votre IP fixe (box maison, bureau) dans la whitelist pour éviter de vous bloquer :
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 VOTRE_IP_PUBLIQUE

5. Mettez à jour régulièrement

Les mises à jour corrigent les failles de sécurité. Un Raspberry Pi obsolète peut être compromis en quelques heures s’il est exposé sur Internet.

Mise à jour manuelle complète

# Mise à jour des paquets
sudo apt update
sudo apt upgrade -y

# Mise à jour système complète (kernel, etc.)
sudo apt dist-upgrade -y

# Nettoyage des anciens paquets
sudo apt autoremove -y
sudo apt autoclean

# Redémarrage si nécessaire
sudo reboot

Mises à jour automatiques (recommandé)

# Installation du paquet de mises à jour automatiques
sudo apt install unattended-upgrades

# Configuration
sudo dpkg-reconfigure -plow unattended-upgrades

# Vérification
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Vérifier les mises à jour disponibles

# Lister les paquets à mettre à jour
apt list --upgradable

# Vérifier si un redémarrage est nécessaire
cat /var/run/reboot-required

# Voir les services à redémarrer
cat /var/run/reboot-required.pkgs

Planning de maintenance pour radioamateurs

# Créer un script de mise à jour
sudo nano /usr/local/bin/update-station.sh

#!/bin/bash
echo "=== Mise à jour station F4HXN ==="
apt update
apt upgrade -y
apt autoremove -y
echo "=== Terminé le $(date) ===" >> /var/log/update-station.log

# Rendre exécutable
sudo chmod +x /usr/local/bin/update-station.sh

# Planifier avec cron (tous les dimanches à 3h du matin)
sudo crontab -e
# Ajoutez :
0 3 * * 0 /usr/local/bin/update-station.sh

Matériel à maintenir à jour :
• Raspberry Pi (Raspbian/Debian)
• Hotspots DMR (Pi-Star)
• Serveurs SDR (WebSDR, OpenWebRX)
• Routeurs OpenWrt
• Proxmox / serveurs virtuels

6. Sauvegardez vos clés SSH

Perdre votre clé privée = perdre l’accès à vos serveurs. Une sauvegarde régulière est essentielle, mais elle doit être sécurisée !

Localisation de vos clés

# Vos clés privées sont ici :
ls -la ~/.ssh/

# Fichiers importants :
~/.ssh/id_ed25519 # Clé privée (À PROTÉGER !)
~/.ssh/id_ed25519.pub # Clé publique (peut être partagée)
~/.ssh/config # Configuration SSH
~/.ssh/known_hosts # Empreintes serveurs connus

Méthode 1 : Sauvegarde chiffrée sur clé USB

# Créer une archive chiffrée avec GPG
tar czf - ~/.ssh | gpg --symmetric --cipher-algo AES256 > ssh-backup-$(date +%Y%m%d).tar.gz.gpg

# Copier sur clé USB
cp ssh-backup-*.tar.gz.gpg /media/usb-backup/

# Pour restaurer plus tard :
gpg -d ssh-backup-20250208.tar.gz.gpg | tar xz -C ~/

Méthode 2 : Coffre-fort de mots de passe

Utilisez un gestionnaire sécurisé comme :

KeePassXC (open-source, local)
Bitwarden (open-source, peut être auto-hébergé)
1Password (commercial, supporte les clés SSH)

Méthode 3 : Sauvegarde cloud chiffrée

# Avec rclone vers votre NAS Synology/QNAP ou cloud
# Chiffrement côté client avec rclone crypt
rclone copy ~/.ssh remote-encrypted:backup/ssh/ --exclude "known_hosts"

# Ou avec rsync vers un serveur distant
rsync -avz -e "ssh -p 2222" ~/.ssh/ backup@nas.f4hxn.fr:/backup/ssh/

Créer des clés de secours

# Générer une deuxième paire de clés "rescue"
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_rescue -C "f4hxn-rescue"

# L'ajouter sur tous vos serveurs
ssh-copy-id -i ~/.ssh/id_ed25519_rescue.pub pi@station1
ssh-copy-id -i ~/.ssh/id_ed25519_rescue.pub pi@station2

# Stocker cette clé rescue dans un endroit différent

ATTENTION :
• Ne stockez JAMAIS vos clés privées sur le cloud en clair
• N’envoyez JAMAIS vos clés privées par email
• Ne commitez JAMAIS de clés dans Git/GitHub
• Utilisez TOUJOURS une passphrase sur vos clés privées

Bonnes pratiques :
• Sauvegardez dans au moins 2 endroits différents
• Testez la restauration de vos sauvegardes
• Renouvelez vos clés tous les 2-3 ans
• Documentez où sont vos sauvegardes (coffre-fort physique, testament numérique)

Pour aller plus loin

SSH est un outil puissant qui ouvre de nombreuses possibilités pour les radioamateurs modernes. Que ce soit pour administrer votre hotspot DMR, accéder à votre station HF depuis n’importe où dans le monde, ou gérer votre infrastructure SDR, maîtriser SSH est devenu indispensable.

Ressources complémentaires :

  • Documentation SSH officielle : man ssh
  • Configuration Hamlib pour contrôle radio distant
  • Tutoriels WireGuard VPN pour radioamateurs
  • Guides Pi-Star et MMDVM

73 de F4HXN !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *