あなたが言及しているのは「SSH REMOTE FORWARDING」であり、「man ssh」で適切に説明されています 」、「-R」について "オプション。
> man ssh
[...]
-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.
[...]
あなたの文脈では、ここで:
- ファイアウォールの背後にある LAN 内の Linux ボックス A (LINUX_BOX_A)。
- インターネットからアクセスできる固定 IP を持つ Linux サーバー B (SERVER_B)
SSH リモート転送を使用して、SERVER_B から LINUX_BOX_A に到達できます。唯一の条件は次のとおりです:LINUX_BOX_A MUST SSH 経由で SERVER_B に接続できます。
この目標を達成するには、以下が必要です:
<オール>
LINUX_BOX_A:~ $ ssh -R 2222:localhost:22 [email protected]_B
これにより、LINUX_BOX_A から SERVER_B への ssh 接続が開かれ、リモートの着信接続に使用されます。
上記の ssh 接続が確立されたら、次のことができます。
- SERVER_B:
SERVER_B:~ $ ssh -p 2222 [email protected]
このような SERVER_B で起動された ssh 接続は、以前の ssh 接続にバインドされている localhost でリッスンしている 2222 ポートに転送されます。したがって、これは「別の ssh 接続内の ssh 接続」になります。
いくつかの追加メモ:
-
最初の ssh 接続が何らかの理由 (非アクティブなためにローカル ファイアウォールによって強制終了されたなど) でタイムアウトまたはダウンした場合、remote-forward/remotely_connect ができなくなることを考慮してください。
-
最初の ssh 接続を長時間アクティブにしておくことが重要であるため、「screen」セッション内でそのような ssh を起動すると便利な場合があります
最後の注意:明らかに、上記のすべてには、この回答の範囲外である (潜在的に深刻な) セキュリティへの影響があります。