ssh -D 1080 lance un proxy SOCKS sur le port 1080 de votre machine et relaie chaque connexion via le serveur SSH, qui atteint ensuite Internet ou son réseau interne. Configurez votre navigateur en SOCKS5 sur 127.0.0.1:1080 et vous naviguez comme si vous étiez assis devant le serveur, le trajet jusqu'à lui étant chiffré dans SSH.
Comment ssh -D 1080 fonctionne comme proxy SOCKS
L'option -D [bind_address:]port d'OpenSSH met en place une redirection dynamique. Le client écoute sur ce port local et parle SOCKS4 ou SOCKS5. Quand le navigateur demande une page, la requête transite par la connexion SSH, généralement vers le port TCP 22, et le serveur ouvre la connexion finale. La destination voit l'IP du serveur, pas la vôtre.
La commande minimale, sans shell distant :
ssh -D 1080 -N -C [email protected]-D 1080: proxy SOCKS sur le port local 1080.-N: n'exécute aucune commande distante ; se contente de maintenir les redirections actives.-C: compresse le trafic, pratique sur les liaisons lentes.-f(facultatif) : passe ssh en arrière-plan après l'authentification.
Seul le superutilisateur peut rediriger des ports inférieurs à 1024, c'est pourquoi 1080 est le choix habituel. Chaque option est décrite dans la page de manuel officielle de ssh.
Configurer DynamicForward dans ~/.ssh/config pour le proxy SOCKS
DynamicForward est l'équivalent de -D dans le fichier de configuration et accepte la même syntaxe [bind_address:]port. Il vous évite de retaper les options :
Host office-proxy
HostName server.example.com
User user
Port 22
IdentityFile ~/.ssh/id_ed25519
DynamicForward 127.0.0.1:1080
ExitOnForwardFailure yes
ServerAliveInterval 30
Compression yesAvec ce bloc, ssh -N office-proxy établit le tunnel. ExitOnForwardFailure yes fait quitter ssh s'il ne parvient pas à se lier au port 1080, au lieu de vous laisser une session sans proxy. Vérifiez les permissions : ~/.ssh en 700 et la clé privée en 600. Si vous dépendez encore de RSA, OpenSSH 8.8 a désactivé par défaut les signatures SHA-1 ssh-rsa ; une clé Ed25519, prise en charge depuis OpenSSH 6.5, contourne le problème.
Configuration du navigateur pour le proxy SOCKS ssh -D
Le navigateur doit utiliser SOCKS5 sur 127.0.0.1, port 1080, et résoudre les noms d'hôte via le proxy. Si le DNS est résolu localement, les noms internes du serveur échouent et vos requêtes DNS sortent par votre propre réseau.
- Firefox : Paramètres → Paramètres réseau → Configuration manuelle du proxy. Hôte SOCKS 127.0.0.1, port 1080, SOCKS v5, et cochez « Utiliser un DNS distant lorsque SOCKS v5 est actif ».
- Chrome ou Chromium : lancez-le avec
--proxy-server=socks5://127.0.0.1:1080, idéalement avec un profil séparé pour que le trafic ne se mélange pas. - curl : utilisez
--socks5-hostname, et non--socks5, pour que le serveur résolve le nom.
google-chrome --user-data-dir=/tmp/socks-profile --proxy-server=socks5://127.0.0.1:1080
curl -I --socks5-hostname 127.0.0.1:1080 https://intranet.example.comSi curl renvoie les en-têtes d'un hôte qui n'existe que sur le réseau du serveur, le tunnel fonctionne.
ssh -D ou Mosh : tableau comparatif pour le proxy SOCKS
Mosh ne fait ni redirection de ports ni redirection X11, il ne peut donc pas transporter un proxy SOCKS. Chaque outil remplit une fonction différente :
| Élément comparé | ssh -D (SOCKS) | Mosh |
|---|---|---|
| Transport et port par défaut | TCP, port 22 | UDP, ports 60000-61000 |
| Redirection de ports ou proxy SOCKS | Oui, redirection dynamique | Non pris en charge |
| Mode d'établissement | Connexion SSH directe | Lance mosh-server via une connexion SSH initiale |
| Usage idéal | Naviguer ou exécuter des outils via le serveur | Shell interactif sur des réseaux mobiles changeants |
En pratique, on les combine : Mosh pour le shell depuis le téléphone, et une connexion SSH distincte avec -D ou DynamicForward quand vous avez besoin du proxy.
4 erreurs lors de la création d'un proxy SOCKS avec ssh -D
- Attendre de Mosh qu'il redirige le proxy : il ne le fera pas ; le tunnel doit passer par SSH classique.
- Fuites DNS : sans l'option de DNS distant dans Firefox, ou avec
--socks5dans curl, les noms sont résolus sur votre réseau local. - Redirection désactivée sur le serveur : si
sshd_configdéfinitAllowTcpForwarding noouDisableForwarding yes, le canal est refusé même si la connexion fonctionne. - Écouter sur toutes les interfaces :
-D 0.0.0.0:1080transforme votre machine en proxy ouvert pour n'importe qui sur votre réseau. Limitez-le à127.0.0.1, sauf si vous avez une raison de faire autrement.
Gérer le serveur du proxy SOCKS depuis votre téléphone avec termi1
Le tunnel ssh -D tourne généralement depuis un ordinateur portable, mais le serveur derrière peut être contrôlé depuis votre téléphone. Avec le terminal SSH termi1, vous ouvrez /etc/ssh/sshd_config dans l'éditeur de votre choix grâce à son propre clavier, qui comprend les touches Esc, Ctrl, Tab et les flèches, ou vous le téléchargez par SFTP sans quitter la session.
Avant de redémarrer le service, validez la syntaxe :
sudo sshd -t
grep -Ei 'allowtcpforwarding|disableforwarding' /etc/ssh/sshd_configDemandez à l'IA de « vérifier la configuration de sshd » et elle tape la commande à l'invite sans appuyer sur Entrée. Sur les connexions marquées comme production, Production Guard retient tout ce qui arrête ou modifie quelque chose, comme un redémarrage de sshd, avant que cela n'atteigne l'invite. Les clés générées sur le téléphone sont conservées dans le stockage sécurisé du système et la clé privée ne quitte jamais l'appareil. Si le serveur n'a pas d'IP publique, un réseau maillé privé comme Prialo, ou Tailscale, permet de l'atteindre sans ouvrir de ports. termi1 est disponible sur l'App Store pour iPhone et sur Google Play.
Questions fréquentes
Que fait exactement ssh -D 1080 ?
ssh -D 1080 ouvre un proxy SOCKS4/SOCKS5 sur le port local 1080 et fait passer chaque connexion reçue par le serveur SSH. Le serveur ouvre la connexion finale : les sites visités voient donc l'adresse IP du serveur et non celle de la machine cliente.
Quelle est la différence entre ssh -D et DynamicForward ?
ssh -D et DynamicForward font la même chose : le premier est l'option de ligne de commande, le second la directive de ~/.ssh/config. Tous deux acceptent la syntaxe [bind_address:]port, et DynamicForward vous évite de répéter l'option à chaque connexion à cet hôte.
Puis-je utiliser Mosh pour créer un proxy SOCKS ?
Mosh ne peut pas créer de proxy SOCKS, car il ne fait ni redirection de ports ni redirection X11. Il utilise UDP sur les ports 60000-61000 uniquement pour le shell interactif. Pour le proxy, il faut une connexion SSH classique avec -D ou DynamicForward dans votre fichier de configuration.
Comment éviter les fuites DNS avec le proxy SOCKS de ssh ?
On évite les fuites DNS avec le proxy SOCKS de ssh en résolvant les noms sur le serveur : dans Firefox, cochez « Utiliser un DNS distant lorsque SOCKS v5 est actif » ; dans curl, utilisez --socks5-hostname ; dans Chrome, passez --proxy-server=socks5://127.0.0.1:1080 avec un profil séparé.
Pourquoi le serveur refuse-t-il le tunnel ssh -D ?
Le serveur refuse le tunnel ssh -D lorsque sshd_config contient AllowTcpForwarding no ou DisableForwarding yes. La connexion réussit quand même, mais les canaux de redirection sont refusés. Modifiez la directive, validez-la avec sudo sshd -t, puis redémarrez le service SSH.