SSH動的ポート転送を介してアプリケーションクライアントとアプリケーションサーバー間の接続を作成するときに
ssh -D
SOCKSプロトコルはどのように使用されますか? SOCKSを通信プロトコルとして使用するかどうか- アプリケーションクライアントとSSHクライアント間
- または、SSH クライアントと SSH サーバー間、
- それともSSHサーバーとアプリケーションサーバーの間にありますか?
アプリケーションクライアントがSSHダイナミックポート転送を介してアプリケーションサーバーに接続すると、SSHクライアントとサーバーは通常「邪魔になります」。これは、SSHプロトコルが使用されなくなったことを意味しますか? SOCKSやSSHなど、どのプロトコルがまだ使用されていますか?アプリケーションクライアントとアプリケーションサーバー間の通信はまだSSHプロトコル内にカプセル化され保護されていますか?
ありがとうございます。
ベストアンサー1
SSHプロトコル単一のTCP接続を介して複数の独立したデータストリームを多重化できます。各データストリームは次のように呼び出されます。チャンネル。 TCP接続を介して送信されるすべてのデータは暗号化されます。送信者は、さまざまなチャネルのデータを単一のデータストリームに集約してから暗号化します。受信者はデータを復号化し、集約されたデータストリームをそのチャネルに戻します。
ポート転送の場合、SSH クライアントは TCP 接続を使用して TCP 経由でリモート SSH サーバーに接続します。SSHプロトコル。一般的なクライアント - >サーバー転送シナリオでは、SSHクライアントはTCP接続のためにポートでもリッスンします。このポートへの接続はサーバーによって宛先に転送されます。
「イニシエータ」(別名「アプリケーションクライアント」)がSSHクライアントのリスンポートに接続されると、SSHクライアントはサーバにチャネルオープン要求を送信します。「direct-tcpip」チャンネルリクエスト。この要求のパラメータには、チャネルを接続する必要があるホスト名/ IPアドレスとポートが含まれます。 SSHサーバーは、指定されたホストとポートへの別のTCP接続を確立し、これを「ターゲット」と呼びます。今、3つのTCP接続があります。
- イニシエータとSSHクライアント間
- SSHクライアントとSSHサーバー間
- SSHサーバーと転送先の間
SSH クライアントとサーバーは、SSH 接続を介してイニシエーターとターゲットの間の双方向にデータを中継します。
したがって、イニシエータから接続を転送するときに、SSHクライアントはSSHサーバーに接続が転送されるべき場所を知らなければなりません。ssh
ポートを転送するためにコマンドラインオプションを使用して実行する場合、たとえば、次のようになります。
ssh -L 1234:example.com:2345 ...
接続を渡す場所に関する情報は、コマンドラインパラメータから取得されます。ssh
ポート 1234 への接続は example.com ポート 2345 に転送されます。
ssh
たとえば、SOCKSサーバーを実行するためのオプションで呼び出された場合:
ssh -D 1234
その後、SOCKSポートに接続する各イニシエータは、まず接続するホストとポートを指定するSOCKSプロトコルメッセージを送信する必要があります。ssh
direct-tcpip チャネルオープン要求は、SOCKS メッセージの情報を使用して構成されます。