web-dev-qa-db-ja.com

SSHトンネリング-ローカルおよびリモートのユースケース

グーグルからSSHトンネリングの基本を学びました。

私はこの興味深い質問を見ました: リバースSSHトンネリングはどのように機能しますか?

しかし、それでも少し混乱します。具体的には、user @ Host.comの部分です。

したがって、回答の1つには、4つのユースケースがあります。これが私がそれらを理解する方法です。私が間違っている場合は私を訂正してください。簡単にするために、ローカルマシンでsshコマンドを実行していると仮定します。

  1. ssh -L 123:localhost:456 [email protected]

    • これにより、すべてのトラフィックがローカルマシンのポート123からexample.comのポート456に転送されます。しかし、example.comは、独自のローカルホストからのトラフィックを確認します。
  2. ssh -L 123:google.com:456 [email protected]

    • これにより、すべてのトラフィックがローカルマシンのポート123からgoogle.comのポート456に転送されます。その後、example.comへのsshセッションを確立します。これは私には意味がありません。この場合、なぜ[email protected]が必要なのですか?
  3. ssh -R 123:localhost:456 [email protected]

    • これにより、user @ example.comへのsshセッションが確立され、example.comのポート123からローカルマシンのポート456にすべてのトラフィックが転送されます。私のローカルマシンは、トラフィックがローカルホストから来ていると見なします。
  4. ssh -R 123:google.com:456 [email protected]

    • これにより、user @ example.comへのsshセッションが確立され、example.comのポート123からgoogle.comのポート456にすべてのトラフィックが転送されます。 #2とは異なり、example.comはリモートホストとして使用されます。

だから私の質問は:なぜ#2に[email protected]が必要なのですか?そして、私は何か間違ったことをしましたか?

更新

わかりました、私は今それを得ると思います。 [email protected]の部分について誤解し、オプションだと思いました。 sshセッションが最初に確立されているようで、その後、port:Host:portが評価されます。

例:#2の場合、最初にexample.comへのセッションを確立してから、トラフィックをgoogle.com:456に転送します。 #1の場合、最初にexample.comへのセッションを確立してから、トラフィックをlocalhost:456(同じホスト)に転送します。

4
gerald

2番目のケースは、example.comが[google.com]ホストに接続できるのに、ボックスが接続できない状況で非常に役立ちます。たとえば、リストにないホストにアクセスしたいときに、いくつかのボックスに制限されているVPN接続があるとします。 ssh -L 123:target.Host.com:[email protected]

したがって、基本的な使用法は、ネットワークの内側にジャンプするか、ネットワークの外側にジャンプすることです(sshをある種のプロキシ/ゲートウェイに)。

そして最後に、特定のホストからの接続のみを受け入れるターゲットサーバーにファイアウォールの制限がある場合があります。

4
paul