はじめに
自分は普段のコーディングにはVSCodeを使用することが多いですが,VSCodeはGit関連の機能も標準で充実しています.ただWindowsで使っているときにGitのリモートリポジトリにアクセスする操作,例えばgit pull
やgit push
を行うとPermission denied (publickey).
とエラーが出てしまっていたので,対処方法を調べたときのメモです.(sshキーのパスフレーズが入力できない.)
環境
今回,自分が試した環境は次の通りです.
- Windows 10 Pro
- VSCode 1.29.1
- git version 2.19.2.windows.1
前提
ターミナルでgit pull
などすると正常に操作できている状態です.
> git pull origin master
Enter passphrase for key '/c/Users/username/.ssh/id_rsa':
From github.com:username/repository
* branch master -> FETCH_HEAD
Already up to date.
対処方法
VSCodeでGitのリモートへアクセスするための手順です.
OpenSSHの指定
GitのOpenSSHを,Gitに同梱されているものでなくWindowsに付属されているOpenSSHを使用するように指定します.
> git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
.gitconfig
に次のように設定されます.
[core]
sshCommand = C:/Windows/System32/OpenSSH/ssh.exe
ssh-agentサービスの起動
OpenSSH Authentication Agent
を自動起動するように設定します.PCを再起動するか手動でこのサービスを開始します.
このssh-agentもGitに同梱されているものでなく,Windows標準のものになります.
キーの登録
sshの秘密鍵をssh-agentに登録します.
このssh-addも同じくWindows標準のものを使用するようにしてください.
> ssh-add
Enter passphrase for C:\Users\username/.ssh/id_rsa:
Identity added: C:\Users\username/.ssh/id_rsa (C:\Users\username/.ssh/id_rsa)
ここまでの対応で,パスフレーズを毎回入力する必要がなく,VSCodeからもgit pull
やgit push
が使えるようになります.
おわりに
参考にしたのはこのissueです.
https://github.com/Microsoft/vscode/issues/13680
ちなみにssh-keygen
するときにパスフレーズを設定しなければ,何もしなくてもVSCodeであつかえます.