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
しかし今回はonemoregateway
ssh 1を実行しており、利用可能nc
なに ssh できonemoregateway
、プロンプトに「The only permitted commands are ssh and scp.
上記のように転送接続を設定しようとすると、 ssh がエラーで終了しますstdio forwarding require Protocol 2
。 」と表示されます。
onemoregateway
しかし、秘密鍵はローカルマシン上にしかないため、からに直接 ssh することはできませんsrv2
。さらに複雑なことに、 に 1 つの鍵が必要でgateway
、onemoregateway
とに別の鍵が必要です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