ssh -Lと-Dの違い


52

ssh -Lと-Dの違いを理解しようとしています。それ以外に何かありますか-DはSOCKSのみですか?

ありがとう!

回答:


53

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サーバーからブラウジングしているようです。


6
-Lに関する重要な詳細の1つは、ローカルポートのみをローカルで使用するためだけにバインドできることです(例:localhost:80:remotehost:8080)が、そのポートを他のユーザーにバインドすることもできます。そのため、ローカルネットワークのマシンにトンネルを介してリモートマシンへのアクセスを提供することができますが、ローカルマシンはこのことを知りません。
-splitbyzero

@dividebyzeroあなたが説明していることを想像するのに苦労しています
Michael Dorst

:私は、manページからこの文を意味@MichaelDorstThe bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
DIVIDEBYZERO

ssh -L 4444:google.com:80私のために動作しません、それはuser@example.comのようにログインするための別のパラメータが必要
サマンMohamadi

6

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

SSH -D [bind_address:]port

ローカルの「動的な」アプリケーションレベルのポート転送を指定します。これは、オプションで指定されたbind_addressにバインドされたローカル側のポートをリッスンするソケットを割り当てることで機能します。このポートへの接続が確立されるたびに、接続は安全なチャネルを介して転送され、アプリケーションプロトコルを使用してリモートマシンからの接続先が決定されます。現在、SOCKS4およびSOCKS5プロトコルがサポートされており、sshはSOCKSサーバーとして機能します。ルートのみが特権ポートを転送できます。動的なポート転送も構成ファイルで指定できます。

IPv6アドレスは、代替構文[bind_address /] portを使用するか、アドレスを角括弧で囲むことで指定できます。

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

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

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

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

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

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