107
125

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VSCodeからGitのリモートにアクセスできないときの対処方法(Windows 10)

Posted at

はじめに

自分は普段のコーディングにはVSCodeを使用することが多いですが,VSCodeはGit関連の機能も標準で充実しています.ただWindowsで使っているときにGitのリモートリポジトリにアクセスする操作,例えばgit pullgit pushを行うとPermission denied (publickey).とエラーが出てしまっていたので,対処方法を調べたときのメモです.(sshキーのパスフレーズが入力できない.)
image.png

環境

今回,自分が試した環境は次の通りです.

  • 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に次のように設定されます.

.gitconfig
[core]
    sshCommand = C:/Windows/System32/OpenSSH/ssh.exe

ssh-agentサービスの起動

OpenSSH Authentication Agentを自動起動するように設定します.PCを再起動するか手動でこのサービスを開始します.
このssh-agentもGitに同梱されているものでなく,Windows標準のものになります.
image.png

キーの登録

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 pullgit pushが使えるようになります.
image.png

おわりに

参考にしたのはこのissueです.
https://github.com/Microsoft/vscode/issues/13680

ちなみにssh-keygenするときにパスフレーズを設定しなければ,何もしなくてもVSCodeであつかえます.

107
125
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
107
125

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?