0
0

Windowsのgitコマンドで(ssh-agentをサービス起動しているのに)毎回パスフレーズを聞かれる対策

Posted at

一言で

「Windows内に ssh.exeが複数ある時は注意だ!」

はじめに

「sshでサーバーに入るときはパスフレーズ覚えていてくれるのに、ssh経由でgit pushしようとすると毎回パスフレーズきかれて面倒……」というそこのあなた!

ネットで検索して、.ssh/configや sshの引数で-i secret_keyをつけたけど全然効果がなかったそこのあなた!

もしかして鍵ファイルの形式が問題なのかと ecdsaや ed25519や、はたまた rsaに戻って鍵ファイルを作り直してはサーバー側に設定してもダメで困り果てたそこのあなた!

……全部わたしだ!!

というわけで、もしかしてこれで対処できるかもしれません

原因

 単純に、普段つかっている ssh.exeと、gitが呼び出している ssh.exeが別物かもしれません。ですので、フルパスで指定します。

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

もしくは

cmd.exe
git config --global core.sshCommand "C:\\Windows\\System32\\OpenSSH\\ssh.exe -i c:\\Users\\oreore\\.ssh\\id_ed25519 "

を試してみてください。

 実際にマシン内を探してみるとssh.exeが複数あり、opensshで入れたものではない ssh.exeが使われた結果、(OpenSSHの)ssh-agent daemon(service)を見に行かず、その結果毎回パスフレーズを聞かれるはめになっていました。

 .git/configは普通にsshアクセスになっていれば大丈夫で、こちらは何もしなくても大丈夫でした。

.git/config
[remote "origin"]
   url = ssh://host-or-host_alias/repos/project.git
   fetch = +refs/heads/*:refs/remotes/origin/*

おわりに

 沼にハマるときって、どうしてこうもコロンブスの卵と言いましょうか、気づけば「なぁんだ」ということばかりなのでしょうねー?

0
0
0

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
0
0