Windows環境のVScodeで毎push時にsshパスフレーズ入力あーめんどう!をやっと回避した話

Mac環境では、SSHキーからssh-agentなどの設定がスムーズに(ミラクル!)できていたようで悩まなかったのですが、Windows環境のVScodeでは、push毎にパスフレーズを求められていて、ずっとストレスだったのですが、ようやく手順を見直す気になりました。

同じことをするのに、Windowsでは難しく感じてしまう元Mac子なのです。

まずはssh-agentを確認

PowerShell

Get-Service ssh-agent

Status   Name               DisplayName
------   ----               -----------
Stopped  ssh-agent          OpenSSH Authentication Agent

はい!案の定、ssh-agentは実行されていません。

サービスアプリで見てもよし! 実行されてなく、手動になっているはずです。

ssh-agentを自動で実行するように変更

これを自動に変更します。

Set-Service ssh-agent -StartupType Automatic

Set-Service : Service 'OpenSSH Authentication Agent (ssh-agent)' cannot be configured due to the following error: Acces
s is denied
At line:1 char:25
+ Get-Service ssh-agent | Set-Service -StartupType Automatic
+                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: 

権限がないそうです。

powershellを管理者権限で起動します。

Start-Process -Verb runas powershell

見慣れたプロンプトが出るので 変更を許可します。

上で先にさらっとコマンド書いていますが調べました。

ネットを調べると以下のような詳しい呪文を見つける。

Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service -PassThru | Select-Object -Property Name, StartType, Status

よくわからない場合(たいがいよくわからないが、、、)には、すぐにコマンドを実行せずに控えているので、他も見てみて最後にgithubのドキュメントも見たりして単純にしました。

Get-Service ssh-agent  ssh-agentを確認。実行していない、手動だった。

Set-Service ssh-agent -StartupType Automatic  手動(Manual)から自動(Automatic)変更する。

Start-Service ssh-agent  ssh-agentを実行させます

これで無事、自動に切り替わり、実行もしたことになりました。 すべてサービスアプリでしてもよいかも。 今回ですと、OpenSSH Authentication Agentを選択してプロパティを開ければ設定できます。

ssh-agentの実行を確認

Get-Service ssh-agent


Status   Name               DisplayName
------   ----               -----------
Running  ssh-agent          OpenSSH Authentication Agent

実行中になりました。

exitして、powershellの管理者権限を終了します。

ssh-agentにSSHキー追加

ssh-add C:\Users\user名\.ssh\id_ed25519
Enter passphrase for C:\Users\user名\.ssh\id_ed25519: パスフレーズ入力
Identity added: C:\Users\user名\.ssh\id_ed25519

結果どうなったか?

ここまででは、まだ毎回フレーズを聞かれてしまいます。

.ssh/config ファイルを用意します。自分はgithubなので、以下のような内容。

Host github
  HostName github.com
  IdentityFile "C:\Users\user名\.ssh\id_ed25519"
  User git

これでもまだ、毎回フレーズを聞かれます・・・

以下の設定が必要らしい。

git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"

爽快!!

これでやっと、毎回フレーズの入力をしないでよいようになりました!
かろやか~笑

補足

自分環境では、githubにある、.bashrcを使う方法はうまくいきませんでした。
おそらくわたしがなにかを間違えているんだろうと思いますけど。ははは