Pourquoi ne puis-je pas me connecter à distance à un port de tunnel SSH inversé, même si GatewayPorts est activé?

19

J'ai besoin d'un accès SSH constant à un hôte de notre service, dont l'adresse IP est allouée de manière dynamique. J'ai configuré un tunnel SSH distant de l'hôte cible vers l'un de nos hôtes possédant une adresse IP statique:

ssh -f -N -g -R :22223:localhost:22 tunnelhost

Lorsque je pointe SSH sur un port local 22223de l'hôte du tunnel, le tunnel fonctionne correctement. Mon problème est que je n'arrive pas à lier le tunnel à autre chose que localhost. Par exemple, lorsque j'essaie de connecter SSH à distance tunnelhost:12323, il n'y a pas de port libre pour le recevoir. J'ai aussi essayé:

ssh -f -N -R :22223:localhost:22 tunnelhost -o GatewayPorts=yes

Mais toujours pas de chance. Netstat me montre:

[me@tunnel_host ~]$ netstat -an | grep 22223
tcp        0      0 127.0.0.1:22223         0.0.0.0:*               LISTEN
tcp6       0      0 ::1:22223               :::*                    LISTEN

Confirmer que le tunnel est uniquement lié à localhost. J'ai ajouté une exception de port sur l'hôte du tunnel, avec firewalld-cmd, et je me suis assuré qu'aucun matériel réseau n'interfère avec la connexion. Des idées sur ce que cela pourrait être?

Cordialement, James.

James Paul Turner
la source

Réponses:

29

Vous devez activer GatewayPorts=yesSSHd ( /etc/ssh/sshd_config) dans la configuration , pas le client, afin de permettre la liaison aux interfaces autres que le bouclage sur les ports distants.

-o GatewayPorts=yes

Ne fonctionne que pour les ports locaux lorsqu'il est transmis à la sshcommande.

Darth Android
la source
Darth Android, Merci pour votre réponse. Il semble que vous ayez raison de dire que -g et -o GatewayPorts ne fonctionnent que pour les tunnels oculaires (-L). Par souci d'exhaustivité, voici un peu plus d'informations sur ce problème, au cas où quelqu'un d'autre le rencontrerait plus tard. bugs.debian.org/cgi-bin/bugreport.cgi?bug=228064
James Paul Turner
3
GatewayPorts=clientspecifiedest un paramètre un peu plus sécurisé, voir askubuntu.com/questions/50064/reverse-port-tunnelling . Dans ce cas, l'adresse de liaison vide (deux points de fin :22223:localhost:2) est requise.
Michael Goerz
1
Je dirais que le GatewayPorts=clientspecifiedparamètre en lui-même n'est pas plus sécurisé, mais qu'il permet plutôt de mieux contrôler les connexions qui seront liées au caractère générique, au lieu de simplement les avoir toutes liées au caractère générique.
Nick
De plus, redémarrez sshd après avoir modifié sshd_config (au cas où vous l'oublieriez)
Nick
⚠️ Soyez conscient que GatewayPorts=yescela ouvrira les ports transférés au monde.
ccpizza