Ouvrir un tunnel WireGuard vers le serveur

WireGuard en marche sur le serveur sur un port UDP, ton Mac (et ton téléphone si tu veux) connecté avec des clés générées sur chaque appareil, et ssh qui atteint le serveur par le tunnel sous un nouveau raccourci. Le port SSH public reste ouvert : la page 2 le ferme.

intermédiaire~25 min de manipulation
#wireguard#vpn#ssh#ufw#debian#macos#security

Pas encore validée de bout en bout — sois le premier.Signaler un problème

Brouillon — pas encore exécuté de bout en bout. Cette page est écrite mais son auteur ne l'a pas encore déroulée sur une vraie machine. Des commandes peuvent être fausses : lis avant de lancer, et dis-nous ce qui casse.

En un coup d'œilUne seconde entrée, privée
Tes appareils
Ton VPS
WireGuardUDP TCP
Ton Macssh
InternetUDP
wg0
sshd:

Ton Mac atteint ${WG_SERVER_ADDR} par un tunnel UDP chiffré vers ${SERVER_IP}:${WG_PORT}, puis ouvre une session SSH dedans. Le port SSH public est encore ouvert sur cette page.

Le serveur est durci, mais SSH répond encore à tout internet. Cette page monte le chemin privé qui va le remplacer : WireGuard sur le serveur, sur un seul port UDP, et ton Mac branché dessus avec une clé générée sur chaque appareil. À la fin, ssh passe par le tunnel. L'ancienne porte reste ouverte pendant toute la page : on ne la ferme qu'à la page 2, une fois le tunnel prouvé.

Avant de commencer

Vérification
$ssh vps 'test -x /usr/sbin/ufw && echo ready'
Retour attendu
ready

Installer WireGuard sur ton Mac

Installe WireGuard depuis le Mac App Store (éditeur : WireGuard Development Team). Ouvre-le, puis + en bas à gauche → Add Empty Tunnel…. Nomme-le . L'app génère une paire de clés et affiche la clé publique en haut de l'éditeur.

Copie cette clé publique dans le champ Clé publique du Mac du panneau des valeurs, puis enregistre le tunnel tel quel. Il est incomplet : la partie 3 le termine. macOS demande d'autoriser l'ajout d'une configuration VPN : accepte.

Installer WireGuard sur le serveur

Dans ta session ssh vps, installe les outils et génère la clé du serveur dans un fichier que seul root peut lire :

Serveur·
Commande sensible — écrase un fichier système. Vérifie avant d'exécuter.
$sudo apt update && sudo apt install -y wireguard-tools
$sudo install -d -m 700 /etc/wireguard
$sudo sh -c 'umask 077 && wg genkey > /etc/wireguard/wg0.key'

Écrire la configuration du serveur

Crée /etc/wireguard/wg0.conf avec sudo vim :

Serveur·écrit un fichier/etc/wireguard/wg0.conf
[Interface]
Address = /24
ListenPort =
PostUp = wg set %i private-key /etc/wireguard/%i.key
[Peer]
# mac
PublicKey =
AllowedIPs = /32

Puis restreins ses droits : sudo chmod 600 /etc/wireguard/wg0.conf.

Ouvrir le port et démarrer

Ouvre le port UDP dans le pare-feu, démarre l'interface et fais-la remonter à chaque démarrage, puis affiche la clé publique du serveur :

Serveur·
$sudo ufw allow /udp
$sudo systemctl enable --now wg-quick@wg0
$sudo wg show wg0 public-key

Copie la clé affichée dans le champ Clé publique du serveur du panneau des valeurs.

Vérification
$ssh vps systemctl is-active wg-quick@wg0
Retour attendu
active

Brancher le Mac

Dans l'app WireGuard du Mac, sélectionne le tunnel , Edit. Garde la première ligne PrivateKey = … et ajoute ceci en dessous :

Tunnel ${SSH_ALIAS} — app WireGuard du Mac
Address = /32
[Peer]
PublicKey =
AllowedIPs = /32
Endpoint = :

Enregistre, puis Activate. Depuis un terminal :

Vérification
$ping -c 3  | grep -o '3 packets received'
Retour attendu
3 packets received
Si le ping ne répond pas

Dans l'ordre :

  • Sur le serveur, sudo wg show : le pair mac a-t-il un latest handshake ? Sinon, compare les deux clés publiques, caractère par caractère.
  • sudo ufw status doit montrer /udp ALLOW.
  • Dans l'app, le tunnel est-il bien Active ? Les compteurs Data received augmentent-ils ?
  • Le Network Firewall d'OVH, si tu l'as activé sur l'IP, filtre avant le VPS : ajoute une règle UDP pour .
  • Un réseau qui bloque l'UDP sortant (certains Wi-Fi publics) : essaie depuis le partage de connexion de ton téléphone.

Passer par le tunnel

Ajoute à ton Mac un raccourci ssh qui vise l'adresse du serveur dans le tunnel, puis connecte-toi avec :

Mac
$touch ~/.ssh/config && chmod 600 ~/.ssh/config
$grep -q '^Host $' ~/.ssh/config || printf '\nHost \n HostName \n Port \n User \n IdentityFile \n IdentitiesOnly yes\n AddKeysToAgent yes\n UseKeychain yes\n' >> ~/.ssh/config
$ssh echo via-wireguard

ssh ne connaît pas encore cette adresse et demande de confirmer la clé d'hôte. Avant de répondre yes, compare l'empreinte affichée avec celle du serveur, lue par l'ancienne porte :

Mac
$ssh vps ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
Vérification
$ssh  echo via-wireguard
Retour attendu
via-wireguard

Terminé

QuoiAvantAprès cette page
Chemins vers le serveurssh vps, par internetssh vps et ssh , par le tunnel
Ports ouverts/tcp/tcp et /udp
Appareils dans le tunnelaucunton Mac, chacun avec sa clé

Page suivante : Fermer la porte publique. Elle retire /tcp d'internet, ne garde SSH que sur le tunnel, et prouve que tout revient après un redémarrage.

Tout a fonctionné ?

Si tu as suivi cette page jusqu'au bout sur une vraie machine, dis-le. Ta validation est datée et enregistre ta stack : le prochain lecteur sur le même chemin sait que ça marche toujours.

Cette copie est en lecture seule. Pour dire que ça marche, ou que ça ne marche pas, ouvre une issue

Seuls tes choix de stack sont enregistrés, jamais tes valeurs. Le pseudo reste sur ce navigateur.