SSH en tant que proxy de chaussettes via plusieurs hôtes

21

Est-ce que ce qui suit peut être réalisé avec SSH.

Il y a trois machines impliquées:

A. My local machine at home
B. The SSH gateway server at school
C. A workstation in a lab, only reachable through B

Je souhaite configurer un proxy SOCKS. Je veux pouvoir surfer sur mon ordinateur local à la maison, comme si j'étais au labo. Cela est dû à certains sites qui ne sont accessibles que depuis l'adresse IP publique de l'école.

Je veux donc exécuter un proxy SOCKS sur l'hôte C. Mais je n'arrive pas à le faire fonctionner à partir de l'hôte A.

Je me connecte à la passerelle et depuis la passerelle je me connecte au poste de travail. Mais je ne peux pas faire en sorte que la passerelle transfère correctement le trafic depuis et vers le proxy.

Comment puis-je faire ceci?

Sébastien
la source

Réponses:

28

Trois méthodes légèrement différentes. (Remplacez $ PORTX et $ PORTY par les numéros de port de votre choix.)

Première méthode: ProxyCommand

machine-a$ ssh -f -N -D $PORT -oProxyCommand="ssh -W %h:%p machine-b" machine-c

Deuxième méthode:

  1. Connectez-vous de A à B, avec le "transfert local" de $PORTà .localhost:$PORT

    machine-a$ ssh -L $PORT:localhost:$PORT machine-b
    
  2. Connectez-vous de B à C, avec le "transfert dynamique" activé.

    machine-b$ ssh -f -N -D $PORT machine-c
    
  3. Configurez votre navigateur pour utiliser le proxy sur .localhost:$PORT

Les étapes 1 et 2 peuvent être résumées comme suit:

ssh -f -L $PORT:localhost:$PORT machine-b "ssh -f -N -D $PORT machine-c"

Troisième méthode:

  1. Connectez-vous de A à B, avec le "transfert local" de $PORTXà machine-c:22.

    machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
    
  2. Connectez-vous de A à C via le tunnel, avec un "transfert dynamique".

    machine-a$ ssh -f -N -D $PORTY localhost -p $PORTX
    

    (Vous pouvez également omettre -f -Nsi vous souhaitez utiliser le même tunnel pour les connexions interactives.)

  3. Configurez votre navigateur pour utiliser le proxy sur .localhost:$PORTY

grawity
la source
1
Incroyable, merci! Je souhaite pouvoir donner un +1 supplémentaire pour en faire un one liner!
jwbensley
2

Pour AWS EMR Sock Proxy, voici les étapes appliquées. En supposant que nous avons deux scénarios de houblon comme ci-dessous

[your-laptop] --<ssh key1>--> [Jump-Box] --<ssh key2>--> [EMR-Master]

Et vous avez déjà configuré FoxyProxy dans votre navigateur. Activez-le avant de commencer avant de commencer les étapes.

Étape 1. Connectez-vous à Jump Box

ssh -i ~ / .ssh / key1 ec2-user @

Étape 2. Configurez le tunnel dynamique sur la boîte de saut, en supposant que Key2 y est présent.

ssh -i ~ / key2 -N -D 8157 hadoop @

Étape 3. Ouvrez une nouvelle console sur le client ssh et configurez le tunnel.

ssh -i ~ / .ssh / key1 -L 8157: localhost: 8157 ec2-user @ -N

kartik
la source