Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2811

多段ssh (途中のホストで名前解決)

$
0
0
構成 Host Port User HostName IP target の名前解決 local - - - - 不可 jump1 10022 user1 jump1.domain1.example.com - 可 jump2 20022 user2 jump2.domain2.example.com - 不可 target 30022 user3 target.domain3.example.com 192.168.3.3 - 目標 local から jump1、jump2 を経由し、target に ssh 接続。 ただし、target の名前解決は jump1 で実行。 これを: user0@local$ ssh -p 10022 user1@jump1.domain1.example.com user1@jump1$ ssh -p 20022 user2@jump2.domain2.example.com user2@jump2$ ssh -p 30022 user3@192.168.3.3 # jump2 は target を名前解決できない user3@target$ config を書いてこうしたい: user0@local$ ssh target user3@target$ 準備 jump1 で resolve を実行すると target の名前解決ができるものとする。 user1@jump1$ resolve target.domain3.example.com 192.168.3.3 解決策 local の ~/.ssh/config: Host jump1 Port 10022 User user1 # local が名前解決 HostName jump1.domain1.example.com Host jump2 Port 20022 User user2 # jump1 が名前解決 HostName jump2.domain2.example.com ProxyCommand ssh -W %h:%p jump1 Host target Port 30022 User user3 # local から jump1 に ssh アクセスし、resolve を実行し、target を名前解決 ProxyCommand ssh -W $(ssh jump1 resolve target.domain3.example.com </dev/null):%p jump2 応用 nameserver で名前解決を実行し、jumpa 経由で jumpb にアクセスしたい場合。 (= jumpa で jumpb が名前解決不可な場合) ProxyCommand ssh -W $(ssh nameserver resolve jumpb </dev/null):%p jumpa local から nameserver に必ずしも直接アクセスできる必要は無い。 nameserver へは ProxyCommand を使い、複数の jump サーバー経由でアクセスしても良い。 注意 ProxyCommand に </dev/null が無いと以下のようにエラーとなり、ssh 接続できない。 user0@local$ ssh target Bad packet length 1231976033. ssh_dispatch_run_fatal: Connection to UNKNOWN port 65535: message authentication code incorrect また、ProxyCommand を利用しない多段 ssh で名前解決を実行しても同様のエラーが発生する場合がある: ProxyCommand ssh -W $(ssh jump1 ssh nameserver resolve </dev/null):%p jump2 これは </dev/null を ssh の引数に工夫して入れ込めば恐らく解決できる。 しかし、ssh が3段や4段となるとクオートが大変だったり色々面倒くさいので検証していない。

Viewing all articles
Browse latest Browse all 2811

Trending Articles