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 |
|
秘密鍵を登録
1
|
|
再起動後でもssh-agentに鍵を登録させていたい場合はK
オプションを利用する
1
|
|
登録されている秘密鍵を確認
1
|
|
リモートの条件
AgentForwardingが許可されていること。 sshd_config
内のAllowAgentForwarding
の値を確認。
実際にやってみる
ssh-agentの転送を許可するにはA
オプションを利用する
1
|
|
毎回オプション指定するのが面倒な場合は~/.ssh/config
にForwardAgent
を追加する。
1 2 |
|
sudo
または su
後、転送した鍵情報を利用することができない場合がある。
suの場合、m
, p
, preserve-environment
オプションを利用することで鍵情報を引き継ぐことができる。
1
|
|
sudoの場合、E
オプションを利用する。
1
|
|
データを転送したい時やデプロイする時に使えて便利。