Première étape : configurer un serveur VPS qui possède une adresse IPV4 fixe.
J'ai souscrit un abonnement chez Ionos, 1euro20 ttc mensuel. Nous dirons une IP 66.55.44.33.
Sur ce serveur créer un utilisateur non root "tunnel"
Modifier le fichier qui commande le démon ssh pour autoriser la redirection de ports:
nano /etc/ssh/sshd_config
Changer #GatewayPorts no en GatewayPorts yes (on retire le #)
Enregistrer
Redémarrer SSHD et vérifier le redémarrage
systemctl restart sshd
systemctl status sshd
Deuxième étape : installer une passerelle qui peut se connecter au serveur VPS sur notre réseau domotique
J'ai utilisé un petit Néopi sous Armbian
Créer un utilisateur "tunnel" se logger sous cette identité
Permettre la connexion sans mot de passe au serveur 66.55.44.33 pour cela on crée un jeu de clés publique et privée
ssh-keygen conserver le répertoire par défaut, pas de passphrase
transférer la clé publique sur le serveur
ssh-copy-id tunnel@66.55.44.33
on vérifie qu'on peut se connecter sans mot de passe sur le serveur distant
ssh tunnel@66.55.44.33
Troisième étape : installer le tunnel sur notre passerelle
Se logger en root
Installer auto-ssh, variante de ssh qui permet une reconnexion automatique en cas de coupure réseau
apt-get install autossh
on peut démarrer le tunnel
autossh -M 0 -N -R 1212:192.168.1.xx:8080 où xx est l'adresse de notre box domoticz si plusieurs redirection de port on peut écrire plusieurs fois "- R port_distant:machine_locale:port_local"
Mais en cas de rédémarrage intempestif on va perdre notre tunnel. La solution est de créer un service linux qui au démarrage va activer notre tunnel.
nano /etc/systemd/system/tunnel.service
Code : Tout sélectionner
[Unit]
Description=AutoSSH service with reverse tunnel
After=network.target
[Service]
Environment="AUTOSSH_GATETIME=0" "AUTOSSH_POLL=30"
ExecStart=/usr/bin/autossh -i /home/tunnel/.ssh/id_rsa -M 0 -N -R 1212:192.168.1.xx:8080 tunnel@66.55.44.33
[Install]
WantedBy=default.targetsystemctl enable tunnel.service
On démarre le service
systemctl start tunnel.service
On vérifie le fonctionnement
systemctl status tunnel.service
Pour se connecter dans le navigateur on saisit l'adresse du VPS et le port choisi pour la redirection : 66.55.44.33:1212