web-dev-qa-db-ja.com

SSHポートフォワーディングとは何ですか?SSHローカルとリモートポートフォワーディングの違いは何ですか?

Sshポート転送と、sshローカルポート転送とリモートポート転送の違いについて混乱しています。それらを詳細に、例を挙げて説明していただけますか?ありがとう!

199
user2886717

スケッチを描いた

ssh tunnel starting from local


ssh tunnel starting from remote

前書き

  1. ローカル:-L Specifies that the given port on the local (client) Host is to be forwarded to the given Host and port on the remote side.

    _ssh -L sourcePort:forwardToHost:onPort connectToHost_は、sshを使用してconnectToHostに接続し、すべての接続試行をlocalsourcePortonPortと呼ばれるマシンのポートforwardToHostに転送します。 connectToHostマシンからアクセスできます。

  2. リモート:-R Specifies that the given port on the remote (server) Host is to be forwarded to the given Host and port on the local side.

    _ssh -R sourcePort:forwardToHost:onPort connectToHost_は、sshを使用してconnectToHostに接続し、すべての接続試行をremotesourcePortonPortというマシンのポートforwardToHostに転送します。ローカルマシンからアクセスできます。

1の例

_ssh -L 80:localhost:80 SUPERSERVER
_

ローカルポート80への接続がSUPERSERVERのポート80に転送されるように指定します。つまり、誰かがウェブブラウザであなたのコンピュータに接続した場合、彼はSUPERSERVERで実行されているウェブサーバーの応答を受け取ります。ローカルマシンでは、Webサーバーは実行されていません。

2の例

_ssh -R 80:localhost:80 tinyserver
_

Tinyserverのポート80への接続がローカルマシンのポート80に転送されるように指定します。つまり、誰かがウェブブラウザで小さくて遅いサーバーに接続すると、ローカルマシンで実行されているウェブサーバーの応答を受け取ります。大きなウェブサイトに十分なディスク容量がないタイニーサーバーでは、ウェブサーバーが実行されていません。しかし、tinyserverに接続する人々はそう思っています。

その他の例

その他の可能性:強力なマシンには、5つの異なるポートで実行される5つのWebサーバーがあります。ユーザーがWebブラウザーを使用してポート80で5つの小さなサーバーの1つに接続すると、要求は強力なマシンで実行されている対応するWebサーバーにリダイレクトされます。それは

_ssh -R 80:localhost:30180 tinyserver1
ssh -R 80:localhost:30280 tinyserver2
etc.
_

あるいは、あなたのマシンは強力なサーバーと小さなサーバーの間の接続にすぎないのかもしれません。次に、それは(独自のWebサーバーを持つために再生する小さなサーバーの1つ)です。

_ssh -R 80:SUPERSERVER:30180 tinyserver1
ssh -R 80:SUPERSERVER:30280 tinyserver2
etc
_
519
erik

ローカルポート転送

sshは追加のローカルポートを作成し、リモートシステムのポートに転送します。

ssh -L 8080:127.0.0.1:80 user@webserver

次に、ブラウザでローカルに使用するURL http://localhost:8080/

ローカルマシンのポート8080に接続し、sshがリモートのsshに転送して、127.0.0.1:80にリクエストを送信します。注127.0.0.1は実際にはリモートサーバーのローカルホストですが、リモートマシンのネットワークで使用可能なホスト/ IPであった可能性もあります。

リモート転送

ローカルsshに転送(リバース)して転送するリモートマシンにリスニングポートを作成するようにsshに要求します。

ssh -R 10123:127.0.0.1:123 user@webserver

したがって、sshがwebserverに接続した後、リモートsshはポート10123で作成およびlsitensを実行します。10123に接続するwebserver上のプロセスは、sshがそれを取得してローカルマシンのsshに送り返し、sshが127.0.01に送ります。 :123ポート。

14
X Tian