NAT内のホストなど、ゲートウェイを経由して多段sshログインする技についてです。
こんなのは既に使い古されている技で、ググると案の定一杯引っかかります。 が、どれもこれも、nc(1)やconnectなどというコマンドを経由させるものばかりで、ssh以外になにか入れなきゃいかんとか腑に落ちません。
というわけで、sshコマンドだけでやってみます。 opensshのman pageによると、
-W host:port
Requests that standard input and output on the client be for‐
warded to host on port over the secure channel. Implies -N, -T,
ExitOnForwardFailure and ClearAllForwardings and works with Pro‐
tocol version 2 only.
という記述があり、端的に言えば、nc(1)でやってることを-Wでもできるということになります。
では設定してみます。
[local] -- [gateway] -- [target]
みたいな環境で localからtargetにログインします。
local の ~/.ssh/config に以下を書き足します。
Host [target] ProxyCommand ssh -q -W %h:%p [gateway]
はい。これでlocalからtargetにログインできますし、scpもできます。
(local) % slogin [target]
以上。
さて次に2段、[local]--[gateway1]--[gateway2]--[target] という環境を考えてみます。
結論から言うと単純にHostの定義増やしてしまえばできるようです。
localの~/.ssh/config に以下のように書いてみましょう。
Host [gateway2] Hostname gateway2.in.example.com ProxyCommand ssh -q -W %h:22 [gateway1] Host [target] ProxyCommand ssh -q -W %h:%p [gateway2]
これで、localからtargetへ(gw1, gw2を経由し)ログインできるようになりました。
以上。
No comments:
Post a Comment