ポート転送 – ssh -L から -D の違い

port-forwarding ssh ssh-tunnel

sshの-Lから-Dへの違いを理解しようとしています。dがsocksのみであること以外に何かあるのでしょうか?

Thanks!

  58  None  2012-04-03


ベストアンサー

ssh -L はローカルポートを開きます。そのポートに送るものはすべて ssh 接続を経由してサーバを経由して出て行きます。そうすると、例えば ssh -L 4444:google.com:80 のように、ブラウザで http://localhost:4444 を開くと、実際に google のページが表示されます

ssh -D はローカルポートを開きますが、-L のように特定のエンドポイントを持ちません。その代わり、SOCKS プロキシのふりをします。例えば ssh -D 7777 を開いた場合、ブラウザに localhost:7777 を SOCKS プロキシとして使うように指示すると、ブラウザの要求はすべて ssh トンネルを通過します。一般のインターネットでは、あなたのコンピュータからではなく、あなたの ssh サーバからブラウジングしているかのように見えます

61  Jessidhia  2012-04-03


SSHでは、-Dはローカルの “動的な “アプリケーションレベルのポート転送を指定します

SSH -D [bind_address:]port

ローカルの “動的” アプリケーションレベルのポート転送を指定します。これは、ローカル側のポートをリッスンするソケットを割り当てることで動作します。このポートに接続が行われるたびに、接続はセキュアチャネルを介して転送され、アプリケーションプロトコルがリモートマシンからの接続先を決定するために使用されます。現在は SOCKS4 と SOCKS5 プロトコルがサポートされており、ssh は SOCKS サーバとして動作します。root のみが特権ポートを転送できます。動的なポート転送は、設定ファイルで指定することもできます

IPv6アドレスは、別の構文で指定できます。bind_address/]port、またはアドレスを角括弧で囲むことで指定できます

スーパーユーザのみが特権ポートを転送することができます。デフォルトでは、ローカルポートはGatewayPorts設定に従ってバインドされます。ただし、明示的な bind_address を使用して、特定のアドレスに接続をバインドすることができます。localhost」のbind_addressは、リスニングポートをローカル用にのみバインドすることを示し、空のアドレスまたは「*」は、ポートをすべてのインターフェイスから利用できるようにすることを示します

さらに、ssh -L ローカル(クライアント)ホスト上の与えられたポートを、リモート側の与えられたホストとポートに転送することを指定します

SSH -L [bind_address:]port:host:hostport

ローカル(クライアント)ホスト上の指定されたポートを、リモート側の指定されたホストとポートに転送することを指定します。これは、ローカル側のポートをリッスンするソケットを割り当てることで動作します。このポートへの接続が行われるたびに、接続はセキュアチャネルを介して転送され、リモートマシンからホストポートのホストポートへの接続が行われます。ポート転送は設定ファイルで指定することもできます。IPv6 アドレスは、代替構文で指定することができます。bind_address/]port/host/hostport、またはアドレスを角括弧で囲むことで指定できます

スーパーユーザのみが特権ポートを転送することができます。デフォルトでは、ローカルポートはGatewayPorts設定に従ってバインドされます。ただし、明示的な bind_address を使用して、特定のアドレスに接続をバインドすることができます。localhost」のbind_addressは、リスニングポートをローカル用にのみバインドすることを示し、空のアドレスまたは「*」は、ポートをすべてのインターフェイスから利用できるようにすることを示します

6  Mughil  2012-04-03


タイトルとURLをコピーしました