一応、先日の記事の手順で、Visual Studio Code からNASに構築した Git サーバーに対して、pullもpushも出来るようになったが、鍵ファイルが使えてないし、コマンドでpull/pushして毎回パスワード入力すれば出来るけど、「変更の発行」ボタンが使えない。これではいささか不便。また、パスフレーズありの鍵ファイルにすると、Visual Studio Codeで「変更の発行」をしたときにパスフレーズ入力する手段がないので、具合が悪いらしい。
ということで、鍵ファイルを使った接続にリトライしてみる。
参考
- https://reincarnation-plus.gitbook.io/project/other/push_github_ssh
- http://www.thiroyoshi.mydns.jp/blog/?p=222
あと、gitはSourceTree 入れたときに同梱されてたやつをそのまま使っていたが、それもあんまりよろしくないようだ。(今まではGitHubやAzure DevOpsにhttpsで接続していたので、それだと特に困ることはなかったが)
1.鍵ファイルを生成
C:\Users\(ユーザー名)\.ssh>ssh-keygen -t rsa -f (鍵ファイル名)
2.NAS側に公開鍵を登録する
$ cd ~/.ssh $ vi authorized_keys (公開鍵の内容を末尾にコピペ)
*既に”authorized_keys”があるので、viで追記したが、必ずしもこの方法でなくてもOK。scpでファイルをアップしてcatで追記とかでもOK。
3.gitでSSH接続するときのコンフィグファイルを作る
C:\Users\(ユーザー名)\.ssh フォルダ内に「config」というテキストファイルを作り、設定を書き込む。
Host (接続に使う名前) User (NASに接続するユーザー名) Hostname (NASのアドレス) IdentityFile "c:/Users/(ユーザー名)/.ssh/(秘密鍵のファイル名)"
上記ファイルへのシンボリックリンクを貼る
> mklink "C:\Program Files\Git\etc\ssh\ssh_config" "C:\Users\<user_name>\.ssh\config"
4.SSH-Agentに鍵ファイルを登録
> ssh-add -k (作った鍵ファイル)
5.SSH-Agentのサービス起動
6..gitconfigファイルにOpenSSHのパスを登録
> git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
上記コマンドで、Gitが使う、SSHの実行ファイルを指定する。Windows 10 に同梱のOpenSSHを使うので、パスも上記で変わらないはず。
7.Visual Studio Code の設定で、Gitの実行パスを変更
settings.jsonファイル内の下記の箇所にGitのパスを指定。これがSourceTree同梱のままになっていて、少しハマりかけた。
{ "git.path": "C:\\Program Files\\Git\\cmd\\git.exe", }
ここまでやったら、Visual Studio Codeから「変更の発行」ボタンが使えるようになったし、パスワードを聞かれることもなくなった。