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