(1) リモート配信の場合:
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side. This works by
allocating a socket to listen to port on the remote side, and whenever a connection is made to this port, the connection is forwarded over the
secure channel, and a connection is made to host port hostport from the local machine.
Port forwardings can also be specified in the configuration file. Privileged ports can be forwarded only when logging in as root on the
remote machine. IPv6 addresses can be specified by enclosing the address in square brackets.
By default, the listening socket on the server will be bound to the loopback interface only. This may be overridden by specifying a
bind_address. An empty bind_address, or the address ‘*’, indicates that the remote socket should listen on all interfaces. Specifying a
remote bind_address will only succeed if the server's GatewayPorts option is enabled (see sshd_config(5)).
If the port argument is ‘0’, the listen port will be dynamically allocated on the server and reported to the client at run time. When used
together with -O forward the allocated port will be printed to the standard output.
hostport
ターゲットで実行されているターゲットプロセスの接続エンドポイントを指定しますhost
。
port
接続エンドポイントです。
- SSHサーバープロセスで、または
- SSHサーバーと同じソースホストで実行されているプロセスで自己接続してSSHトンネルを使用したいですか
port
?
(私の推測は後者です)
(2) ローカル配信の場合:
-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. 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 a connection is made to host port hostport from the remote machine. Port
forwardings can also be specified in the configuration file. IPv6 addresses can be specified by enclosing the address in square brackets.
Only the superuser can forward privileged ports. By default, the local port is bound in accordance with the GatewayPorts setting. However,
an explicit bind_address may be used to bind the connection to a specific address. The bind_address of “localhost” indicates that the listen‐
ing port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
hostport
ターゲットで実行されているターゲットプロセスの接続エンドポイントを指定しますhost
。
port
接続エンドポイントです。
- SSHクライアントプロセスで、または
- SSHクライアントと同じソースホストで実行されているプロセスで、独自の接続を介してSSHトンネルを使用したいですか
port
?
(私の推測は後者です)
(3) 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, option‐
ally 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. Only root can forward privileged ports. Dynamic port forwardings can also be specified in
the configuration file.
IPv6 addresses can be specified by enclosing the address in square brackets. Only the superuser can forward privileged ports. By default,
the local port is bound in accordance with the GatewayPorts setting. However, an explicit bind_address may be used to bind the connection to
a specific address. The 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.
port
接続エンドポイントです。
- SSHクライアントプロセスで
- SSH SOCKSサーバー上または
- SSHクライアントと同じホストでプロセスを実行しており、SOCKSを使用してサーバーに接続したいですか
port
?
(私の考えは2番目のようです。SSHクライアントに独自のデフォルトポートがあるので、最初のものではないようです。3番目のものはわかりません)
答え1
このスケッチはあなたのすべての質問に答えるのに役立ちます。https://unix.stackexchange.com/a/118650/121504
しかし、あなたの質問に明確に答えるには、次のようにします。
リモート配信の場合:
port
SSH サーバーの接続エンドポイントです。ローカル配信の場合:
port
SSH クライアントプロセスの接続エンドポイントです。SOCKSプロキシの場合:
port
SSH クライアントプロセスの接続エンドポイントです。
ただし、より視覚的な説明は、実際には上記のスケッチです。しかし要約すると:
これ最初ポート(SOCKプロキシに固有のもの)は次のとおりです。いつもこれ自由港次の手順で接続します。これその他port は、そのポートがあるポートです。既存サービスの実行。
編集する:
実際の問題が何であるかを理解している場合は、より簡単に理解できるのは、lsof
私の例では.yourポートを使用することです12345
。
リモート配信の場合:
[local ] $ ssh -R 12345:localhost:22 remote
[remote] $ lsof -P | grep 12345
sshd 27772 root 7u IPv6 1304283702 0t0 TCP localhost:12345 (LISTEN)
sshd 27772 root 8u IPv4 1304283703 0t0 TCP localhost.localdomain:12345 (LISTEN)
ローカル配信の場合:
[local] $ ssh -L 12345:localhost:22 remote
[local] $ lsof -p $(pidof ssh) -P | grep 12345
ssh 6779 jakuje 4u IPv6 146565 0t0 TCP ip6-localhost:12345 (LISTEN)
ssh 6779 jakuje 5u IPv4 146566 0t0 TCP localhost:12345 (LISTEN)
動的ポート転送の場合:
[local] $ ssh -D 12345 [email protected]
[local] $ lsof -p $(pidof ssh) -P | grep 12345
ssh 11388 jakuje 4u IPv6 173537 0t0 TCP ip6-localhost:12345 (LISTEN)
ssh 11388 jakuje 5u IPv4 173538 0t0 TCP localhost:12345 (LISTEN)