0

TCP が機能するには 2 つのポートが必要であることを知りました。1 つはサーバーにデータを送信するため、もう 1 つはサーバーからデータを受信するためです。特にsshの場合、これらのポートの両方を指定する方法はありますか? ローカル トンネル方式は、発信ローカル ポートと着信サーバー ポート用であり、着信ローカル ポート用ではないという印象を受けます。

4

3 に答える 3

1

あなたが学んだことは完全に正しくありません。TCP 接続は、1 対の IP/ポートの組み合わせ (クライアント IP/ポート、サーバー IP/ポート) の間で行われますが、各端で使用されるポートは 1 つだけです。たとえば、接続は 1.2.3.4:65432 上のクライアントと 5.6.7.8:22 上のサーバーの間である可能性があります。

クライアント ポートは、SSH を含むほとんどのアプリケーションにとってまったく重要ではありません。ディレクティブを使用して SSH に「特権付き」(1024 未満) のポートを使用させることがUsePrivilegedPortできますが、それは root のみが利用できます。

于 2012-03-05T23:48:56.770 に答える
0

openssh を使用すると、暗号化されたトンネルを作成して、トラフィックをあるポイントから別のポイントに転送できます。-L および/または -R フラグを使用して、ジョブを実行できます。

例 1: SSH サーバーを介して流れる別のマシンに転送されるクライアント PC のローカル ポートをバインドできます。

(ssh user@sshserver -L<local_port>:<remote_ip>:<remote_port>)
ssh user@192.168.1.1 -L8080:192.168.1.20:8090

例 2: SSH サーバーを通過するローカル マシンのポートに接続されているリモート マシンのポートをバインドできます。

(ssh user@sshserver -R<local_port>:<remote_ip>:<remote_port>)
ssh user@192.168.1.1 -R8080:192.168.1.20:8080

例 3: SSH サーバー自体のリモート ポートに転送されるクライアント PC のローカル ポートをバインドできます。

(ssh user@sshserver -L<local_port>:<sshserver>:<remote_port>)
ssh user@192.168.1.1 -L8080:127.0.0.1:8090

最初の例では、次を実行します。

telnet 127.0.0.1 8080

クライアント マシンで、ポート 8090 の 192.168.1.20 に接続します (これは SSH サーバー ネットワークです!)

2 番目の例では、ポート 8080 がマシン 192.168.1.20 (SSH サーバー ネットワークです!) にバインド (作成) され、SSH クライアントのローカル ポート 8080 に関連付けられます。したがって、192.168.1.20 では次のことができます。

telnet 127.0.0.1 8080

SSH クライアント マシンの 8080 に移動します。

3 番目の例は最初の例と似ていますが、リモート マシンは SSH サーバー自体であるため、次のようにします。

telnet 127.0.0.1 8080

クライアント マシンから、SSH サーバーのポート 8090 に接続されます。

于 2012-03-06T00:00:48.263 に答える
0

TCP が機能するには 2 つのポートが必要であることを知りました。1 つはサーバーにデータを送信するため、もう 1 つはサーバーからデータを受信するためです。

いいえ、そうではありません。1 つのローカル ポートと 1 つのリモート ポートが必要です。これは双方向プロトコルであり、全二重でもあります。したがって、あなたの質問には答えは必要ありません。

于 2012-03-06T00:46:18.913 に答える