回答:
はい。ローカル転送を使用する場合、宛先IPとポートを指定する必要があります。からman ssh
:
-L [bind_address:]port:host:hostport
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はSOCKSプロキシとして機能します。再びマンページから(強調鉱山):
-D [bind_address:]port
Specifies a local “dynamic” application-level port forwarding.
This works by allocating a socket to listen to port on the local
side, optionally bound to the specified bind_address. Whenever a
connection is made to this port, the connection is forwarded over
the secure channel, and the application protocol is then used to
determine where to connect to from the remote machine. Currently
the SOCKS4 and SOCKS5 protocols are supported, and ssh will act
as a SOCKS server.
を使用すると-L
、SSHはトラフィックを理解しようとしません。ローカルポートで受信したすべてをターゲットポートに送信するだけです。接続が確立された時点でターゲットポートを決定します。を使用すると-D
、SSHはプロキシサーバーとして機能するため、複数のポートからの接続を処理できます(たとえば、SOCKSプロキシとして使用するように構成されたブラウザーは、同じ接続を介してHTTP、HTTPS、FTPなどにアクセスできます)。他のプロキシサーバーと同様に、トラフィックを使用して宛先を決定します。
-D
、それが持っているデータを送信するために理解するために、に。
この概念を学習する別の方法は、クライアントがAmazonのElastic Map Reduce(EMR)クラスターに接続する方法を調べることです。EMRには公開するローカルアプリが多数あり、これらは通常SSHトンネルを介してアクセスされます。
クライアントには2つのオプションがあります。A)ローカルポート転送SSHコマンド:ssh -i key.pem -L 8157:abcd:8088 hadoop @ abcd
ここで、クライアントは、たとえば、localhostの8157がabcd:8088に転送されると言います。クライアントはlocalhostにリクエストを行う必要があります 。http:// localhost: 8157クライアントは、これらのそれぞれに対してssh接続を確立する必要があります。
B)動的ポート転送ここでは、単一のSSHコマンドが使用されます:ssh -i key.pem -D 8157 hadoop @ abcd
ポート8157に着信するトラフィックは、sshトンネル経由でルーティングされます。トラフィックの宛先は、URLの宛先になります。たとえば、Webサーバーでプロキシクライアントを使用し、一部のhttp URIをリダイレクトしてプロキシを使用できます。1つのコマンドで8089,8090のすべてのアプリケーションにアクセスできます。
参照については、次のドキュメントを参照してください:https : //docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html