Inversement du tunneling

50

Je dois montrer à quelqu'un un site Web fonctionnant sur ma machine demain. Normalement, j'accomplissais cela par le transfert de port sur mon routeur local, mais grâce au matériel défaillant et à son remplacement, mon routeur actuel ne me permet pas de transférer des ports.

Tellement bloqué par ce retard et ne voulant pas envoyer l’ensemble sur un serveur approprié, j’ai eu une idée folle: Puis-je transférer mon port vers un serveur externe via SSH?

J'ai déjà fait du tunneling sur le port, mais je le fais généralement de la bonne façon:

  • Je me connecte à une boîte distante et je demande que le port 12345 apparaisse sur ma machine locale au port 12345.
  • Je commence quelque chose sur P12345 sur la machine distante
  • Je peux y accéder via localhost: 12345

Ce que je souhaite :

  • Connectez-vous à un PC distant et demandez que son local P12345 récupère les éléments de mon P12345 local (via le tunnel)
  • Je lance quelque chose sur mon ordinateur local sur P12345
  • D'autres personnes peuvent accéder à distance: 12345 et voir mon localhost: 12345
posée Oli 22.06.2011 - 18:46
la source

2 réponses

83

La commande de transfert du port 80 de votre ordinateur local ( localhost ) vers l'hôte distant sur le port 8000 est la suivante:

ssh -R 8000:localhost:80 [email protected]

Cela nécessite un ajustement supplémentaire sur le serveur SSH, ajoutez les lignes à /etc/ssh/sshd_config :

Match User oli
   GatewayPorts yes

Ensuite, rechargez la configuration par le serveur exécutant sudo reload ssh .

Le paramètre GatewayPorts yes force SSH à relier le port 8000 à l'adresse générique, de sorte qu'il devient disponible pour l'adresse publique de remote-machine ( remote-machine:8000 ).

Si vous avez besoin de ne pas tout lier à l’adresse générique, modifiez GatewayPorts yes à GatewayPorts clientspecified . Comme ssh se lie à l'adresse de bouclage par défaut, vous devez spécifier un bind_address vide pour lier l'adresse générique:

ssh -R :8000:localhost:80 [email protected]

: avant 8000 est obligatoire si GatewayPorts est défini sur clientspecified et que vous souhaitez autoriser l'accès public à remote-machine:8000 .

Extraits manuels pertinents:

ssh (1)

  

-R [bind_address:] port: hôte: hostport
  Spécifie que le port donné sur l'hôte distant (serveur) doit être transféré vers l'hôte et le port donnés du côté local. Cela fonctionne en allouant un socket pour écouter le port du côté distant, et chaque fois qu'une connexion est établie avec ce port, la connexion est transmise via le canal sécurisé et une connexion est effectuée pour héberger le port hôte du poste local. Par défaut, le socket d’écoute sur le serveur sera uniquement lié à l’interface de bouclage. Cela peut être modifié en spécifiant un bind_address. Un bind_address vide, ou l'adresse "*", indique que le socket distant doit écouter sur toutes les interfaces. Spécifier un bind_address distant ne réussira que si l'option GatewayPorts du serveur est activée (voir sshd_config (5)) .

sshd_config (5)

  

GatewayPorts
  Indique si les hôtes distants sont autorisés à se connecter aux ports transférés pour le client. GatewayPorts peut être utilisé pour spécifier que sshd doit permettre aux redirection de ports distants de se lier aux adresses non bouclées, permettant ainsi à d'autres hôtes de se connecter. L'argument peut être "non" pour obliger l'hôte local à transférer uniquement les transferts de ports distants, "oui" pour forcer les redirections de ports distants à se connecter à l'adresse générique ou "clientspecified" pour permettre au client de sélectionner adresse à laquelle le transfert est lié. La valeur par défaut est "non".

Voir aussi:

réponse donnée Lekensteyn 22.06.2011 - 19:28
la source
12

Si le serveur a GatewayPorts no , vous pouvez obtenir le même résultat en exécutant ssh -g -L 8001:localhost:8000 [email protected] sur le serveur une fois que vous avez exécuté la commande ssh -R sur le client. Cela rendra le port de bouclage 8000 sur le serveur accessible sur toutes les interfaces du port 8001.

    
réponse donnée FaST4 20.06.2016 - 12:17
la source

Lire d'autres questions sur les étiquettes