複数のホストを介したSocksプロキシとしてのSSH


21

SSHで次のことを実現できますか。

関連する3つのマシンがあります。

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

SOCKSプロキシをセットアップしたい。ラボにいるように、自宅のローカルコンピューターでサーフィンできるようにしたいです。これは、学校のパブリックIPからのみ到達可能な一部のサイトが原因です。

したがって、ホストCでSOCKSプロキシを実行したいのですが、ホストAから動作させることができません。

ゲートウェイに接続し、ゲートウェイからワークステーションに接続します。しかし、ゲートウェイにプロキシからトラフィックを適切に転送させることはできません。

これどうやってするの?

回答:


28

わずかに異なる3つの方法。($ PORTXと$ PORTYを選択したポート番号に置き換えます。)

最初のメソッド:ProxyCommand

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

2番目の方法:

  1. 「ローカルフォワーディング」を使用$PORTして、AからBに接続します。localhost:$PORT

    machine-a$ ssh -L $PORT:localhost:$PORT machine-b
    
  2. 「動的転送」を有効にして、BからCに接続します。

    machine-b$ ssh -f -N -D $PORT machine-c
    
  3. でプロキシを使用するようにブラウザを設定します。localhost:$PORT

手順1と2は次のように要約できます。

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

3番目の方法:

  1. 「ローカルフォワーディング」を使用$PORTXして、AからBに接続しますmachine-c:22

    machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
    
  2. 「動的転送」を使用して、トンネルを介してAからCに接続します。

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

    -f -N対話型接続にも同じトンネルを使用する場合は省略できます。)

  3. でプロキシを使用するようにブラウザを設定します。localhost:$PORTY


1
すごい、ありがとう!ワンライナーにするために余分な+1を与えることができればいいのに!
jwbensley

2

AWS EMR Sock Proxyの場合、適用される手順は次のとおりです。以下の2つのホップシナリオがあると仮定します。

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

そして、ブラウザでFoxyProxyをすでにセットアップしています。手順を開始する前に開始する前にアクティブにします。

ステップ1.ジャンプボックスにログイン

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

手順2. Key2が存在する場合、ジャンプボックスに動的トンネルを設定します。

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

手順3. sshクライアントで新しいコンソールを開き、トンネルを設定します。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.