SSHリバースソックストンネル


21

ssh -D ローカルマシンにソックスポートを作ることができます。そして、それはトラフィックをリモートに、そして他の場所に渡します。

ssh -L port:host:hostportローカルマシンのポートをリッスンし、リモートマシンの観点からトラフィックを "host:hostport"に渡します。

ssh -R port:host:hostport の対応物です ssh -Lこれは、リモートマシンのポートをリッスンし、ローカルマシンの観点からトラフィックを "host:hostport"に渡します。

しかし対応するものは何ですか ssh -Dつまり、どのようにしてリモートマシンのソックスポートをオープンするのでしょうか。


1
あなたはうまくいかないしうまくいかない答えをあなたが受け入れたので質問は価値を失います。これ(回答者がコメントで述べた)はそれでも stackoverflow.com/questions/842021/…
barlop

回答:


12

-D & -L あなたは2つのマシン間でどちらかの方法で通信する方法を持っています。

そう...

  • ローカルマシンから、 -R リモートマシンに、ローカルマシンのsshdを指すリスニングポートを作成します。
  • つかいます -D リモートマシン上で、上記で作成したポートをポイントしてください。

以下に記入するとうまくいくと思います。

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

' remotehost 「、」 remoteport '& ' localport '上記で変更する必要があります。靴下代用品が9050年に結成されます。


ああ、これはSOで尋ねられたように見えます: stackoverflow.com/questions/842021/… 答えだけが同じ考えです。私は確実に動くでしょう;-)編集 - ええ、その1つは私のものより正しかったのです。私はパッチをあてました。
PriceChild

実際、私は自分の状況でこの間接的な方法を使用しました。しかし、私の考えでは、彼はroot権限を持っていなかったので、sshdサービスを持つことができず、OpenSSHクライアントしか持っていません。それで、私は直接的な方法があることを理解したいのですが、OpenSSHはそうではないようです…ありがとうあなたも同じです
Berry

1
@barlopとそれはうまくいきません。10.0.0.10からssh実行可能ファイルを実行したとすると、-Rは10.0.0.10:9050に転送すると言っています
barlop

1
@PriceChildは実際にコマンドをテストしましたか?
barlop

4
-1あなたはそれをテストすることを気にしませんでした、そしてあなたの命令は完全に間違っています。あなたはそれを他のSOの答えのようにしようとしましたが、あなたは失敗しました。 AからBへのSSH接続で、あなたがリンクしているものは、Aをlistenしています。あなたはSOCKSプロキシがリスニングしている側でリスンしている。
barlop

10

〜/ .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

詳細

逆のDynamicForwardが欲しい。これは2つのsshコマンドを使って実現されます。

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

このようにして、ターゲットはSSHクライアントへのSOCKSトンネルを持ちます。

私がしたことは、ターゲットにログインしている間にSOCKSトンネルの作成が透過的に処理されるように、sshをチェーン化して中間ホストを通してリモートターゲットに到達するという古典的な方法を使用することです。 -WはClearAllForwardingsを意味するため、最初のProxyCommand + ncトリックは必須です。


これは金メダルに値します。
Dakatine

あなたのコマンドが何をするのかについてもっと詳しく説明してもらえますか?
alonso s

3

OpenSSHにリバースソックストンネルを提供する機能はありません。そのため、「リモート」マシンでsocksプロキシを提供するsshコマンドを実行する必要があります。

リモートマシンがローカルマシンにSSH接続できない場合は、まずローカルからリモートへのSSH接続を作成します。それからリモートマシン できる ポート2222でローカルマシンにSSH接続します。

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