web-dev-qa-db-ja.com

puttyを使用したマルチホップ上のSSHトンネル

2つの連続したLinuxマシンの背後にあるVNCを実行しているLinuxマシン(VNCServerと呼ぶことにします)に接続したい状況があります。つまり、VNCServerにsshするには、ラップトップからGateway1に、次にGateway1シェルからsshする必要があります。 Gateway2にsshし、そのシェルから最終的にVNCServerにsshします。ネットワーク設計とアクセスフローを変更できません。ラップトップ->ゲートウェイ1->ゲートウェイ2->サーバー。 Gateway1にroot権限がなく、22と5901を除くすべてのポートが閉じています。

ラップトップでVNCビューアを起動してVNCServerにアクセスする方法はありますか?私はそれがsshトンネリング機能を使用して行われる可能性があることを理解し、WindowsラップトップにPuTTYをインストールしています(申し訳ありませんが、仕事用のラップトップにはLinuxやCygwinなどをインストールできません)。これが私の人生をとても簡単にするので、どんな助けでも大歓迎です!

13
xkcd

PuTTYはsshトンネルをサポートしています。接続、SSHツリーを展開すると、トンネルのエントリが表示されます。

ローカルトンネルは、指定したIPアドレスとポートにリモート接続するWindowsマシン上に開くlocalhostポートを生成します。たとえば、自宅のデスクトップにRDPしようとしている場合、通常は7789のようなランダムなローカルポートを選択し、デスクトップのローカルIPアドレス(1.2.3.4:3389)をリモートとして配置します。ホスト。必ず[追加]、[適用]の順にクリックしてください。この時点で、127.0.0.1:7789にrdpすると、PuTTYセッションを介して1.2.3.4:3389に接続します。

ここからがおもしろいところです。中間ボックスにポートトンネルを設定し、PuTTYでリモートポートとして指定したローカルポートを設定すると、最終的な宛先である中間ボックスを介して、PuTTYをバウンスできます。まだいくつかのssh接続を行う必要がありますが、一度設定すると、vncまたはrdpをWindowsシステムから直接クロスできるようになります。

[〜#〜]例[〜#〜]

  1. PuTTYのトンネルパネルに移動します(SSHセッションが既にアクティブな場合はコンテキストメニューから、またはPuTTYを開始した直後の接続画面で、[接続]-> [SSH]-> [トンネル]にアクセスします)。
  2. ローカルソース15900、リモートソース127.0.0.1:15900でトンネルを作成します。
  3. (まだ接続されていない場合)Gateway1に接続します。
  4. Gateway1では、ssh -L 127.0.0.1:15900:VNCServerIP:5900 user @ Gateway2
  5. Gateway2へのsshが起動したら、127.0.0.1:15900にvncしようとします-反対側にVNC画面が表示されるはずです!

追加ボーナス-多くの人がこれを知っているわけではありませんが、このプロセスはIPv6/IPv4トラフィックのプロキシにも使用できます。 SSHはトンネルにどのプロトコルを使用するかを考慮しないため、sshサーバーがデュアルスタック(IPv4とIPv6の両方のアドレスを持つ)であれば、理論的にはIPv4のみのシステムからIPv6のみのホストにアクセスできます。

19
Peter Grace

両方のホップにPuTTYを使用する場合は、代替手段があります。この例では、ゲートウェイ#1(10.0.1.123)からゲートウェイ#2(10.0.1.456)に10.0.1.789のポート80にホップしています。

  1. まず、ゲートウェイ#1へのホップを作成します。最初に、最初のサーバーへの接続をセットアップします。 [接続]> [SSH]> [トンネル]で、2番目のゲートウェイへのトンネルを設定します。この例では、ポート2222を2番目のゲートウェイに転送しています。

    connect to servert

    set up tunnel

  2. 次に、2番目のホップを設定します。最初のゲートウェイを介して次のゲートウェイにトンネリングし、2番目のゲートウェイでポート転送を設定します。接続は、ポート2222のlocalhostへの接続です。これは、実行中のssh接続を介して2番目のホップにトンネルします。この接続では、ポート3333から10.0.1.789に転送するポートを設定します。

    enter image description here

    enter image description here

  3. ブラウザを開いて127.0.0.1:3333に移動すると、2つのSSH接続を経由して10.0.1.789:80にトンネルします。

15
Scott