ssh1 サーバーを介してマルチホップ ssh トンネルを確立する

ssh1 サーバーを介してマルチホップ ssh トンネルを確立する

ssh1 サーバーをトンネリングする際に問題が発生しています。これは顧客のマシン上で発生しており、ssh2 に更新されることはありません。


背景を少し説明します。顧客のゲートウェイをトンネルでうまく通過できます。

localhost -> gateway.customer.example.com -> srv.customer.internal

この構成を使用する

Host gateway
    Hostname gateway.customer.example.com
    IdentityFile ~/.ssh/mykey
    ...

Host srv-tunnel
    ProxyCommand ssh gateway -W srv.customer.internal:22
    IdentityFile ~/.ssh/mykey
    ...

そして単純に

$ ssh srv-tunnel

これはうまく機能し、キーファイルを使用してトンネルを自動的に確立します~/.ssh/mykey


このマルチホップ トンネルに同様の設定を使用しようとしました。

localhost -> gateway.customer.example.com
                |
                v
             onemoregateway.customer.internal -> srv2.customer.internal

しかし今回はonemoregatewayssh 1を実行しており、利用可能ncに ssh できonemoregateway、プロンプトに「The only permitted commands are ssh and scp.上記のように転送接続を設定しようとすると、 ssh がエラーで終了しますstdio forwarding require Protocol 2。 」と表示されます。

onemoregatewayしかし、秘密鍵はローカルマシン上にしかないため、からに直接 ssh することはできませんsrv2。さらに複雑なことに、 に 1 つの鍵が必要でgatewayonemoregatewayとに別の鍵が必要ですsrv2

では、 にトンネルするにはどうすればいいのでしょうかsrv2?

同僚がWindowsでPutty+Pageantを使ってやったので、どうにかできるはずだと感じていますが、私はLinuxを使っています。

答え1

わかりました。方法は見つかりましたが、トンネリングを透過的にする方法はないようです。

Host gateway
    Hostname gateway.customer.example.com
    IdentityFile ~/.ssh/mykey
    ...

Host tunnel-to-srv2
    ProxyCommand ssh gateway -W onemoregateway.customer.internal
    IdentityFile ~/.ssh/myotherkey
    Protocol 1
    LocalForward 10022 srv2.customer.internal:22
    ...

Host srv2
    Hostname localhost
    Port 10022
    IdentityFile ~/.ssh/myotherkey
    Protocol 1
    ...

そして今、私はしなければならない

$ ssh tunnel-to-srv2

そして最後に、別の端末で*

$ ssh srv2

*トンネルsshプロセスをバックグラウンドに送る方法が見つからない。-fNT


編集:onemoregateway確かにnc実行できるのですが、フルパスを使用する必要があります/bin/nc

結局、私はこの構成を採用しました

Host gateway
    Hostname gateway.customer.example.com
    IdentityFile ~/.ssh/mykey
    ...

Host tunnel-to-srv2
    ProxyCommand ssh gateway -W onemoregateway.customer.internal
    IdentityFile ~/.ssh/myotherkey
    Protocol 1
    ...

Host srv2
    ProxyCommand ssh tunnel-to-srv2 /bin/nc srv2.customer.internal 22
    IdentityFile ~/.ssh/myotherkey
    Protocol 1
    ...

走るだけで透明なトンネルを飛び越えられる

$ ssh srv2

関連情報