Si vous consultez la page de manuel de ssh, vous constaterez que la syntaxe de l'option -R
lit :
\-R \[_bind\_address_:\]_port_:_host_:_hostport_
Lorsque _bind_address
_ est omis (comme dans votre exemple), le port est lié à l'interface de bouclage uniquement. Pour qu'il soit lié à toutes les interfaces, utilisez
ssh -R \*:8080:localhost:80 -N root@example.com
ou
ssh -R 0.0.0.0:8080:localhost:80 -N root@example.com
ou
ssh -R "[::]:8080:localhost:80" -N root@example.com
La première version se lie à toutes les interfaces individuellement. La deuxième version crée une liaison générale IPv4-only, ce qui signifie que le port est accessible sur toutes les interfaces via IPv4. La troisième version est probablement équivalente à la première d'un point de vue technique, mais là encore, elle ne crée qu'une seule liaison à l'adresse suivante ::
ce qui signifie que le port est accessible via IPv6 en mode natif et via IPv4 par l'intermédiaire d'un système d'exploitation. Adresses IPv4 mappées IPv6 (ne fonctionne pas sous Windows, OpenBSD). (Vous avez besoin des guillemets car [::]
pourrait être interprété comme un glob, sinon).
Notez que si vous utilisez OpenSSH sshd
du serveur, le GatewayPorts
L'option doit être activée ( clientspecified
ou, dans de rares cas, à yes
) pour que cela fonctionne (vérifier le fichier /etc/ssh/sshd_config
sur le serveur). Sinon (la valeur par défaut de cette option est no
), le serveur forcera toujours le port à être lié sur l'interface de bouclage uniquement.
0 votes
Que signifie l'IP public ? Si vous essayez de vous connecter à un ordinateur local par le biais du routeur et via Internet, la plupart des routeurs n'autorisent pas un tel bouclage.