SSH Reverse socks tunnel

ssh -D peut faire un port de chaussettes sur la machine locale, qui transmet le trafic vers la télécommande, puis vers d'autres endroits.

ssh -L port:host:hostport , listen port sur machine locale, passe le trafic vers "host: hostport" du point de vue de la machine distante.

ssh -R port:host:hostport est la contrepartie de ssh -L , qui écoute le port sur la machine distante, et passe le trafic vers "host: hostport" du point de vue de la machine locale.

Mais quelle est la contrepartie de ssh -D , c'est-à-dire comment ouvrir un port de chaussettes à une machine à distance, qui transmettra le trafic au local, puis à d'autres endroits?

-D

Alors…

  • Marco illustrée illustr Chambeficdiceeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaidence aledandeeaeaeaeaeaeaeaeaeaeaidence aleeaeaeaeaeaeaeaficeaeaeaeaeaeaficeaeaeaeaeaeaficeaeaeaeaeaeaficeaeaeaeaeaeaficidenceeaeaeaeaeaeaeaficeaeaeaeaeaeaficeaeaea`ea'ea`eaea illustreaeaeaeaea illustrea'eaea illustrea'ea
  • Utilisez -D sur la machine distante, pointé vers le port que vous avez créé ci-dessus.

Je pense que le remplissage ci-dessous le fera fonctionner …

ssh remotehost -R remoteport:localhost:localport "ssh -D 9050 localhost -p remoteport"

remotehost remoteport localport Un proxy de chaussettes sera formé en 9050.

Peut être réalisé de manière transparente avec cet extrait dans ~ / .ssh / config:

 Host sockstunnel ProxyCommand ssh -D 3128 localhost nc -q 1 localhost 22 Host target RemoteForward 3128 localhost:3128 ProxyCommand ssh -W target:22 sockstunnel 

Détails

Nous voulons un DynamicForward inversé. Cela se fait en utilisant deux commandes ssh:

  • ssh -D 3128 localhost
  • ssh -R 3128:localhost:3128 target

De cette façon, Target a un tunnel de SOCKS au client SSH.

Ce que j'ai fait, c'est utiliser la manière classique de chaîner ssh pour atteindre une cible distante via des hôtes intermédiaires afin que la création de tunnel de SOCKS soit traitée de manière transparente lors de la connexion à la cible. Le premier geste ProxyCommand + nc est obligatoire car -W implique ClearAllForwardings.

Il n'y a pas de possibilité de fournir un tunnel de chaussettes inversé avec OpenSSH, donc vous devez exécuter la commande ssh fournissant le proxy de chaussettes sur la machine "à distance".

Si la machine à distance ne peut pas ssh dans la machine locale, créez d'abord une connexion ssh de local à distance qui envoie le port 22 à eg 2222. Ensuite, la machine distante peut ssh dans la machine locale sur le port 2222.