GitのSSH認証でパスフレーズ入力を省略する方法
問題
GitHubにSSHキーでアクセスする際、git pushやgit pullのたびにパスフレーズの入力を求められる。
パスフレーズの入力を省略する方法を記載します。
user@MacBook % git push origin ブランチ名
Enter passphrase for key '/Users/user/.ssh/id_rsa_github':
解決方法
1. ssh-agentにキーを追加(一時的)
ssh-add ~/.ssh/id_rsa_github
sshセッション中のみパスフレーズ入力が不要になります。
ssh-add
SSH認証エージェント(ssh-agent)にSSHキーを追加するコマンド~/.ssh/id_rsa_github
追加するSSHキーファイルのパスssh-agentとは
SSHキーを一時的にメモリ上で管理するプログラム
パスフレーズを一度入力すれば、セッション中は再入力不要になる
2. SSH設定ファイルの作成(永続化)
~/.ssh/config
ファイルに以下の設定を追加:
# 該当のファイルを修正する
~/.ssh/config
# 設定内容
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
IdentitiesOnly yes
AddKeysToAgent yes
UseKeychain yes
3. macOSキーチェーンへの保存
ssh-add --apple-use-keychain ~/.ssh/id_rsa_github
設定内容の説明
設定項目 | 説明 |
---|---|
Host |
接続時の識別名 |
HostName |
実際の接続先 |
User |
接続ユーザー名 |
IdentityFile |
使用するSSHキーのパス |
AddKeysToAgent |
ssh-agentへの自動追加 |
UseKeychain |
macOSキーチェーンの使用 |
動作確認
設定後、以下のコマンドでパスフレーズなしでアクセスできることを確認:
ssh -T git@github.com
注意点
- この設定はmacOS向けです
- Linuxの場合は
UseKeychain
オプションは不要 - 複数のGitHubアカウントを使用する場合は、それぞれ異なる
Host
名を設定
まとめ
ssh-agentとmacOSキーチェーンを組み合わせることで、SSH認証のパスフレーズ入力を省略し、開発効率を向上させることができます。
こういう一つ一つの小さい効率化が最高の結果を生み出します。
どんどん効率化していきましょう!