2016年10月5日水曜日

sshのエージェント転送を使おう!

ゲストOSのpisces/ariesは、物理的にはホストOSであるaquariusの中に入っているけど、Open vSwitchのブリッジのお陰でネットワーク的にはaquariusや他のPCとフラットな関係にある。


そのため、作業用の端末を家のLANに繋いでいる場合、pisces/ariesへは直接sshログインが出来る。


ところが、外から接続する場合、今はルータの設定上、一度aquariusにログインした後、pisces/ariesへログインするという、sshを多段に通す必要がある。


ルータの設定で、pisces/ariesへポート転送すれば、外からも直接アクセス出来るようになるんだが、あまり穴を空けすぎるのも危険なので、外から接続する時は、aquariusを経由しなければならない制約は我慢することにする。


で、sshの鍵の配置について考えてみよう。

作業用端末を家のLANに直接繋いでいる状態で、pisces/ariesへ直接ログインする場合、作業用端末のssh公開鍵をpisces/ariesへ登録しておけばいい。
これは、sshで接続@鍵認証で行った公開鍵の登録と同じ作業を行うということだ。


作業用端末が外にあって、外からaquariusにsshログインし、そのセッションからpisces/ariesへsshログインする場合は?

普通に考えれば、aquariusで鍵ペアを作成し、その公開鍵をpisces/ariesに登録すればいいと思う。


この場合、作業端末で作成した鍵ペアと、aquariusで作成した鍵ペア、両方を管理しないといけなくなる。
今はまだいいが、将来増えてくると、ちょっと管理しきれなくなる。
そこで出て来るのが「エージェント転送」という機能だ。

エージェント転送は、sshで接続@Agent認証その2の最後に名前だけ出している。ようやく、解説と実装する機会が来た、というわけだ。

エージェント転送とは…
sshの鍵認証のやり取り部分を、もう一つ手前のsshセッションに任せる、という感じの仕組みとなる。
文章だと分かりにくいが以下の図を見ればわかると思う。


つまり、踏み台になっているaquariusで鍵ペアを作る必要はなく、作業用端末で持っている秘密鍵で認証が出来るわけだ。

これなら、複数の鍵ペアを管理する必要は無い、だけでなくpisces/ariesへ直接ログインする時も、aquariusを経由してログインする時も、同じ鍵を使って認証出来る。

これを実現するためには、条件が2つある。
一つは、言うまでもなく、最終接続先であるpisces/ariesに、作業端末の公開鍵が登録されていることだ。


もう一つは、作業端末→aquariusの接続で、エージェント転送を許可していることだ。


それぞれ実装しよう。
まずは、pisces/ariesに公開鍵を登録する。
これは、sshで接続@鍵認証と同じ手順でいいのだが、既にaquariusに登録されている鍵を、そのままpisces/ariesへ持っていって登録すればいい。

以下の手順で実施しよう。
piscesへ登録
(aquarius)$ scp .ssh/authorized_keys 192.168.55.133:~/authorized_keys.aquarius
(aquarius)$ ssh 192.168.55.133
(pisces)$ mkdir .ssh
(pisces)$ chmod 700 .ssh
(pisces)$ cat authorized_keys.aquarius >> .ssh/authorized_keys
(pisces)$ rm authorized_keys.aquarius
(pisces)$ exit
ariesへ登録
(aquarius)$ scp .ssh/authorized_keys 192.168.55.134:~/authorized_keys.aquarius
(aquarius)$ ssh 192.168.55.134

(aries)$ mkdir .ssh
(aries)$ chmod 700 .ssh
(aries)$ cat authorized_keys.aquarius >> .ssh/authorized_keys
(aries)$ rm authorized_keys.aquarius
(aries)$ exit

次は、作業端末→aquariusの接続でエージェント転送を許可、だ。

これは、teratermからのsshログイン時、ユーザ名を入力するダイアログにある「エージェント転送する(O)」にチェックボックスを入れておくだけでいい。

一旦ログアウトして、再度ログインする時にチェックを入れよう。

そこまで準備が整ったら、エージェント転送の確認だ。
既にaquariusへはログインしていると思うので、そこからpisces/ariesへログインしてみよう。
(aquarius)$ ssh 192.168.55.133
もしくは
(aquarius)$ ssh 192.168.55.134
「エージェント転送要求を受け入れますか?」というダイアログが出てきたと思う。


このダイアログに対して、「はい(Y)」を選択してみよう。
パスワードを入力することもなく、ログインすることが出来たはずだ。
これによって、鍵ペアを複数管理する必要もなく、ログインパスワードを入力する必要もなく、多段ログインが出来るようになった。

更に、作業端末を家のLANに直結して、pisces/ariesへ直接ログインする時も、パスワード認証をせずにログインが出来るようになったぞ。

というところで、今回のsshエージェントに関してはオシマイ。

0 件のコメント:

コメントを投稿