環境
- Windows10(64bit)
- git for windows
なお、git
コマンドがPowerShellから使えるようにgit for windowsで設定してある。
問題となった事象
ssh
コマンドのみの使用では問題なかったが、ssh-agent
コマンドを使用した場合にいずれも発生した。
-
ssh-add
を使って確かに秘密鍵をパスワードを登録したはずなのに、git
コマンドを使うとでパスワードを相変わらず聞かれる。 - "warning agent returned different signature type ssh-rsa"という警告が出る。
1つ目の問題への対処
原因は、git
コマンドはgit for windowsに付属しているsshバイナリを使用するため。
gitに使用するssh.exeのパスを教えてやればいい。
以下手順
- 環境変数
GIT_SSH
を定義して、値をgitに使用するssh.exeのパスにする。
こちらを参考にした。
2つ目の問題への対処
sshキーを生成する際にEd25519のキータイプを指定する。
次を実行すれば良い。
ssh-keygen -t ed25519 -C "your_email@example.com"
2つ目の問題への対処
(追記: 2020/10/14)
@ttdodaさんからのコメントで、Ed25519鍵を使うと以下の手順を行わずとも正常に動作する事がわかりました。Ed25519鍵のほうがRSA鍵よりも優れているみたいなので、積極的に使っていきましょう。
原因は、windowsに付属しているSSHクライアントのバージョンが古いため。(ゴミかよ!!!)そのうち、WindowsUpdateでバージョンアップされるらしい!?
Issueがすでに建てられていて、白熱していた。
以下、最新のwindows用OpenSSHをインストールするための手順
1. まずはwindowsに標準で付属しているOpenSSHクライアントをアンインストールする。設定→アプリ→オプション機能からアンインストールできる。
2. 指示通りに再起動する。
3. GitHubのreleaseから最新のリリースのOpenSSH-Win64.zipをダウンロードする。
4. Program FilesにOpenSSHというフォルダ名で展開する。
5. このディレクトリのパスをシステム環境変数のPathに追加して、パスを通す。
6. 環境変数の変更を反映するために再起動する。
ひとまず一件落着だが、ssh-agent
を起動時に立ち上げるための設定も必要だ。なお、OpenSSH Authentication Agentは標準のOpenSSHクライアントをアンインストールしたときに削除されている。
以下手順
1. PowerShellを管理者権限で起動する。
2. 次のコードを実行して、サービスに追加。
New-Service -Name ssh-agent -BinaryPathName "C:\Program Files\OpenSSH\ssh-agent.exe"
再起動して、ssh-agent
を実行して起動していることを確認。
これで快適にgit
を使えるようになった!!
Congratulations!!!
以下のサイトを参考にした。
Windows10 で ssh-agent のサービスを登録する
OpenSSH for Windows のインストール(Windows 上)
おまけ:環境変数の編集
windowsボタンを押して「env」と入力すると、「システム環境変数の編集」という選択肢が出てきて素早く編集画面に移動できる。
そもそも、秘密鍵を置くマシンに自分しかアクセスできないということが保証できるなら、無理にパスフレーズを設定しなくてもいいのかもしれない。