環境
Windows10 Pro
git 2.39.1 (scoopでインストール)
参考記事
はじめに
GitHubのSSH接続にて、passphraseを設定するとコミットやプッシュ時に毎回passphraseを入力しなければならなかったため、その解決方法を備忘録としてここに記します。
GitでSSH認証を済ませている前提で話すため、
SSH認証がお済みでない方は、以下の記事を参考に認証を済ませてから読み進めてください。
問題
ssh接続によるGitを使ったコミットやプッシュを実施した際にpassphraseを入力しなければならない。
> git push origin name_of_branch
Enter passphrase for key '/Users/[user_name]/.ssh/id_ed25519':
毎回要求されるのはしんどいので、要求されないようにする
Gitコマンドに秘密鍵を設定
gitコマンドが発行される際に、「とあるgitのリポジトリ(ホスト)と通信する際にはこの鍵を使ってね」と設定する場所がC:\Users\user/.ssh/config
ファイル。このconfigファイルに、以下のように記載して保存する
-
Host
= 鍵を使い分ける単位を指定するためのもの。区別できればなんでもいい。-
HostName
= GitHubのホスト名もしくはIPアドレスなので「github.com」で良い -
IdentityFile
= 当該ホストへの接続に使用したい秘密鍵のフルパス -
User
= 「git」で良い
詳しくは次を参照すると良い => https://qiita.com/miriwo/items/976d21e9a42fd3b01d08
-
Host github
HostName github.com
IdentityFile C:\Users\user\.ssh\id_ed25519
User git
SSHサービスが動いていない
- 毎回passphraseを要求される原因はWindowsのssh-agentが動いていなかったことだったが、
ssh-add -l
コマンドでssh-agentが動いているか確認
ssh-add -l
Could not open a connection to your authentication agent.
Could not open a connection to your authentication agent.
を直訳すると、「認証エージェントへの接続を開けませんでした。」になる。(SSHサービスが動いていない)
OpenSSHサービスの起動
秘密鍵の登録
-
ssh-add sshの秘密鍵ファイルのパス
を実行
ssh-add .ssh/id_ed25519
Gitがssh-agentを利用するように設定
- 以下のコマンドを実行して、Gitの設定を、WindowsのOpenSSHを見に行くように設定。
この設定ができてないと、先ほど設定したはずのパスフレーズを聞かれたり、vscodeからpushしようとしたときに、 C:\Users\user/.ssh/config を見に行ってくれなかったりする
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"