別の所に書いていた日記なんですが、エライ苦戦したので、Blogにアップしておきます。第二段。
レシピはSSHの多段階接続です。
ちなみにsshdはOpenSSHです。
なんというか、networkの華がある機能ですねぇ。
が。。。。
ssh+proxycommandに大苦戦。
構成としては、
クライアント -----> 踏み台sshサーバ(a) -----> 目的のサーバ(b)
って事がやりたい訳です。
なんでこんな面倒な事するかというと、
直接目的のサーバへはセキュリティ上sshを許可したくない。
かといって、一端踏み台サーバにログインして、目的のサーバにsshすると、踏み台サーバに全ての公開鍵を持っていなくてはならないので、セキュリティ上問題があるから。
で対策として考えたのはssh -D かProxyCommandの2通り。
ssh -Dのダイナミックルーティングだと、踏み台サーバに鍵を持っていないといけないらしいので、却下。ProxyCommandで対応することにした。
やり方は結構単純で、
クライアントのlinux内に〜/.ssh/configというファイルを作っておいて、
こんな感じに記入。
Host hoge.example.com ProxyCommand ssh -l [踏み台サーバのユーザ] piyo.example.com nc %h %p
コレでhoge.example.comにsshすると、piyo.example.com へ ssh 接続して nc コマンドを起動します。
nc コマンドの引数には %h と %p を指定していますが,これは (b) を起動する際に,(a) を起動したときの接続先のホスト名とポート番号に置き換えられます。
この設定なら %h は hoge.example.com に,%p は 22 に置き換えられます。
問題はsshを全て公開鍵認証にしてあること、
踏み台サーバも公開鍵がないとアクセスできないので、
実際sshはこうやって打ちます。
# ssh -l [目的サーバのユーザ] hoge.example.com -i [公開鍵のパス]
この公開鍵は、踏み台サーバ+目的のサーバ双方で同一の鍵にして有ります。(別々に指定するやり方もあるかも・・・)
これから実験する予定な事
1 踏み台と目的サーバの公開鍵を分けられるか?
2 分けられない場合パスフレーズだけでも別にできるか?
3 クライアントがwinの場合はどうやる?
辺りです。1はよく解らないのですが、2はいけそうな気がします。
2段階目の接続のときにもパスフレーズ聞かれましたから。
windowsで同じことをやる方法はソフトゥエア依存なので、これから調べます。PuTTyにはそういう機能があるらしいけど。。。どうなだろ?
ちなみに調べていくうち知ったTips
- sshコマンドで公開鍵を指定しない場合、〜/.ssh/identityというファイルを探しに行く。ファイルが見つかった場合、コレを公開鍵として使う。通常のパスワード認証のサーバにアクセスしても問題はない。(鍵のパスフレーズを無駄に入力させられるだけ)この方がオススメ。
- 公開鍵のパーミッションは600にしておくべし。他のユーザが読めるようだとエラーになる。
- sshでつながらない場合はssh hoge.example.com -vとやるとデバック出力が見れる。
- ログが見たい場合は/var/log/secure。ただほとんど接続先のログに吐かれる(あたりまえか・・)
はぁ〜、しんどかった。 ヽ(´Д`;)ノアゥア...
カテゴリ
Linuxトラックバック(0)
このブログ記事を参照しているブログ一覧: SSHの多段階接続 (公開鍵認証編)
このブログ記事に対するトラックバックURL: http://hackmylife.net/mt/mt-tb.cgi/380
















コメントする