VSCodeのRemote-SSHを使っている時、gitで同期ができない問題
問題
VSCode上のターミナルではgitでPullやPushはできるが、VSCode上からPushなどをおこおうとすると、
Git: Permission denied(publickey).
と表示されてしまう。
環境
ちなみに私の環境はgitlabにRaspberryPiに接続したWindowsマシンのVSCode上でgitを行おうとしていた。
原因
2019/07/03 現在、VSCode公式が近い問題を既存の問題としてあげていた
私の場合、SSHキーにパスフレーズは登録していないが、何をやってもVSCode上からはPullもPushもできなかったため、バグであると納得することにした。
###追記:2019/07/04
と、思ったが、ターミナル上でssh-agentが起動しないことを不審に思い、
eval 'ssh-agent'
とやったが、裏で実行されるが、その後の
ssh-add -l
をするとssh-agentが起動されてない旨のメッセージがでてしまっていた。
解決策
そのssh-agentを起動する方法を
eval $(ssh-agent)
とすると、しっかり起動できるようになり、
ssh-add [秘密鍵のパス]
とすれば鍵が登録され、VSCodeからもgitが使えるようになる
ただ、実行する度にプロセスが増えてしまうため、
1つのプロセスを複数のBashから利用するために
ここのサイトに書かれているコードを.bashrcに追記すると良いと思う。
ちなみに、.bashrcのコードは、ダブルクォーテーションが「“ ”」これになっているため、「" "」に直さないとエラーがでるので気を付けて欲しい。
また、.bashrcに追記するコードの11行目と23行目の
ssh-add
だが、これだけだと、
https://euske.github.io/openssh-jman/ssh-add.html
ここに書いてある通り、引数が無しのため、.ssh内の「id_rsa」,「id_dsa」,,,などなどの決まった名前のファイルしか読み込まないため、
秘密鍵のファイル名を変更している場合には、この11行目と23行目に引数としてファイルのパスを追記してあげると良いと思う。
参考
.bashrc, .bash_logoutソースコード
http://kurokawh.blogspot.com/2012/07/linuxcygwin-ssh-agent.html
ssh-add
https://euske.github.io/openssh-jman/ssh-add.html