SSH の秘密鍵にパスフレーズを設定していると、サーバーに繋ぐたび、Git で pull するたびに毎回入力を求められて、正直うんざりしませんか?
かといってパスフレーズを外すのはセキュリティ的に怖い。そんな時に救世主になってくれるのが ssh-add コマンドです。
一度パスフレーズを入力して鍵を SSH エージェントに登録しておけば、それ以降の認証はエージェントが代わりにやってくれます。便利さに感動したので、布教します。
ssh-add の基本
まずは秘密鍵をエージェントに登録します。
ssh-add ~/.ssh/id_rsa
実行するとパスフレーズを 1 回だけ聞かれます。入力すれば、以降はそのターミナルセッションが続く限り、ssh も git もノンストップ。
登録されている鍵を確認するには:
ssh-add -l
登録を解除する時:
ssh-add -d ~/.ssh/id_rsa # 個別に削除
ssh-add -D # 全部削除
macOS なら Keychain 連携で「永続化」できる
macOS では SSH エージェントが Keychain と連携できます。これがまた便利で、一度登録すれば再起動後も覚えていてくれる。
ssh-add --apple-use-keychain ~/.ssh/id_rsa
さらに ~/.ssh/config に以下を書いておくと、初回接続時に自動でエージェントへ登録されます。
Host *
AddKeysToAgent yes
UseKeychain yes
もう ssh-add を手で叩く必要すらない。最高。
注意点:便利さの裏側
便利な反面、エージェントに登録された鍵は そのユーザーセッション中はパスフレーズ無しで使える状態になります。
- 共用 PC では使わない
- 席を外す時はロックする
- 不要になったら
ssh-add -Dでクリアする癖をつける
「パスフレーズを設定する意味」をちゃんと残すには、この辺りの運用がセットです。
まとめ
ssh-addで秘密鍵をエージェントに登録すれば、毎回のパスフレーズ入力から解放される- macOS なら Keychain 連携で再起動後も維持できる
- 便利な分、ロックや
ssh-add -Dなどの運用はちゃんとセットで
「パスフレーズ付き鍵 = 面倒くさい」と諦めてた人ほど、効果てきめんです。ぜひ。
安達棒とアンバサダーで色々釣りたいおじさん。
Macでプログラムを書いて暮らしています。 趣味はルアーフィッシング、ギター。
宮崎県在住。



