SSH agent forwardingまとめ

Capistranoを触った際にagent forwardingについて調べたことをまとめておく。

環境

  • MacOS X 10.9 (ローカル)
  • CentOS 6.5 (リモート)

SSH agent forwardingとは

ローカルからサーバA サーバAからサーバBへSSH接続したい場合、サーバAに秘密鍵を置かずローカルの鍵を参照して認証させる仕組み。

例えば以下のようなことができる。

  • ローカルからサーバAにログイン後、サーバBにログイン
  • ローカルからサーバAにログイン後、サーバBとファイル同期(rsync)する
  • ローカルからサーバAにログイン後、git cloneを行う

SSH agent forwardingの設定

agent forwardingを利用するためにはいくつか条件がある。

ローカルの条件

ssh-agentが起動していること。また秘密鍵がssh-agentに登録されていること。

秘密鍵を登録しなければ、参照する鍵がない為SSH接続時にエラーとなる。

ssh-agentの起動確認

1
2
$ echo "$SSH_AUTH_SOCK"
/tmp/launch-5XHwDO/Listeners

秘密鍵を登録

1
$ ssh-add path_to_key

再起動後でもssh-agentに鍵を登録させていたい場合はKオプションを利用する

1
$ ssh-add -K path_to_key

登録されている秘密鍵を確認

1
$ ssh-add -L

リモートの条件

AgentForwardingが許可されていること。 sshd_config内のAllowAgentForwardingの値を確認。

実際にやってみる

ssh-agentの転送を許可するにはAオプションを利用する

1
$ ssh -A exsample.com

毎回オプション指定するのが面倒な場合は~/.ssh/configForwardAgentを追加する。

~/.ssh/config
1
2
Host exsample.com
  ForwardAgent yes

sudo または su 後、転送した鍵情報を利用することができない場合がある。

suの場合、m, p, preserve-environmentオプションを利用することで鍵情報を引き継ぐことができる。

1
$ su -p

sudoの場合、Eオプションを利用する。

1
$ sudo -E

データを転送したい時やデプロイする時に使えて便利。

参考

Comments