LoginSignup
12
11

More than 1 year has passed since last update.

windowsのssh-agentが動かないときの対処法

Last updated at Posted at 2020-10-13

環境

なお、gitコマンドがPowerShellから使えるようにgit for windowsで設定してある。

問題となった事象

sshコマンドのみの使用では問題なかったが、ssh-agentコマンドを使用した場合にいずれも発生した。

  1. ssh-addを使って確かに秘密鍵をパスワードを登録したはずなのに、gitコマンドを使うとでパスワードを相変わらず聞かれる。
  2. "warning agent returned different signature type ssh-rsa"という警告が出る。

1つ目の問題への対処

原因は、gitコマンドはgit for windowsに付属しているsshバイナリを使用するため

gitに使用するssh.exeのパスを教えてやればいい。

以下手順

  1. 環境変数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」と入力すると、「システム環境変数の編集」という選択肢が出てきて素早く編集画面に移動できる。

そもそも、秘密鍵を置くマシンに自分しかアクセスできないということが保証できるなら、無理にパスフレーズを設定しなくてもいいのかもしれない。

https://serverfault.com/questions/142959/is-it-okay-to-use-a-ssh-key-with-an-empty-passphrase#:~:text=As%20long%20as%20no%2Done,keys%20used%20by%20automated%20software.

12
11
3

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
12
11