ShellScript

ssh-agentの基本

More than 5 years have passed since last update.

説明するほどのでもない気がするけど、書いてとせがまれたので書いてみる。

適当に書いたので、細かい説明とか用語の使い方がおかしいのは大目に見てもらう方向で。

ssh-agentは、sshの鍵をssh-agentデーモン(?)に保持させておいて、使い回せるようにするツール。

使い方は、ssh-agentを起動して、そのシェル内でssh-add でkeyを追加するだけ。

% ssh-agent bash

% ssh-add /path/to/my-private-key

とやっておく。

ちなみに、ssh-agent使うなら普通はagent forwardingした方がらく。

agent forwardingは、多段sshする際にsshの鍵の認証情報をforwardする機能で、たとえば

A(local) -> B(DMZ) -> C(App server) -> D (DB server)

みたいな多段構成でsshをわたっていくとき、Dに入るための秘密鍵をいちいちBやCに置くのは面倒だしセキュリティ的にモアレで気持ち悪い。

そんなときにagent forwardingを使うと、Aで持っている秘密鍵をつかってBだけでなくCやDも認証できてしまう。

ssh-agentつかってれば、パス入力なしで全部ばんばんわたっていける。

やり方は単純で、ssh-agentの起動しているところ(ここでいうA) からBにsshでアクセスする際に

% ssh -A B

と、-Aオプションをつけてやるだけ。B->CやC->Dのときにはもう-Aはいらない。

(Bはサーバの名前。れいの名前のつけ方が良くなかった。。)

こんな感じでやると、色々さくさくできて便利。


追記:

agent forwardingを常時使いたい場合は~/.ssh/configで

ForwardAgent yes

を書いておけば-Aいらない。