PowershellのGitが「ssh-agentが見つかりませんでした」と言っている


97

私はgitをインストールしていて、コマンドプロンプトでうまく動作しますが、powershellを開くと、次の警告が表示されます。

WARNING: Could not find ssh-agent

ページェントを実行し、秘密鍵をロードしました。これは、すべてのGUIツールとコマンドプロンプトで機能しますが、Powershellでは機能しません。

どうしたの?


1
でした%PATH%いくつかの理由で異なること?
Jonas Heidelberg


1
rohancraggのリンク@基本的に追加言う:$env:path += ";" + (Get-Item "Env:ProgramFiles(x86)").Value + "\Git\bin"あなたのPROFILEファイルの先頭に(PSコマンドを使用しise $PROFILE編集するためのPROFILEを開くために)
トビー・

説明せず申し訳ありません-ハッキングされたように言います:「「ssh-agent.exe」実行可能ファイルを見つけることができませんでした。そのファイルはC:\ Program Files(x86)\ Git \ binにありますが、そのフォルダーは自動的ではありませんmsysgitによってPATHに追加されました」
rohancragg '22

私はお勧めします。この答えは、今haackedポストでアドバイスすることが好ましい:
rohancragg

回答:


137

詳細な説明をお探しの方は、このブログ投稿をご覧ください。以下はブログ投稿からの引用です。結局のところ、ssh-agent.exeニーズはパスにあるか、他の方法で解決する必要があります。

編集: ほとんどの人はリンクされたブログを読まないようで、元の抜粋は完全な解決策を引用していなかったため、以下のブログからの引用を拡大しました。

他のすべての回答へのいいね!に基づいて、エラーを解決する方法は数多くあります。動作することが知られているものを以下に引用します。他の回答をスキャンしてください。それらはあなたにとってより適切かもしれません。

PowerShellプロンプトを再起動すると、SSHエージェントを開始できないことが通知されました。

「ssh-agent.exe」実行可能ファイルを見つけることができなかったことが判明しました。そのファイルはC:\ Program Files(x86)\ Git \ binにあります。しかし、そのフォルダーはmsysgitによって自動的にPATHに追加されません。

このパスをシステムPATHに追加したくない場合は、PowerShellセッションにのみ適用されるようにPowerShellプロファイルスクリプトを更新できます。これが私が行った変更です。

$ env:path + = ";" +(Get-Item "Env:ProgramFiles(x86)")。Value + "\ Git \ bin"

私のマシンでは、そのスクリプトはC:\ Users \ Haacked \ Documents \ WindowsPowerShell \ Microsoft.Powershell_profile.ps1にあります。


2
これは本当に答えになるはずです!
caveman_dick 2012

これが正解です。受け入れられた回答は、TortoiseGitまたはTortoiseHgがインストールされていることを前提としています。この回答が指摘するように、問題を修正するために必要なのはMsysgitだけです。
Carl

3
UggghがこのディレクトリをPATHに追加すると、私は不快になりました。Windowsのコマンドと競合する総称名を持つあらゆる種類の.exeがあります。いつかロバに噛まれないように。
Salman von Abbas

4
@SalmanPK:それは私を不快にさせるだけでなく、Gitメンテナーからもはっきりと勧められません。そして、私の場合、PowerShellのコマンドラインを壊しました。
スコリマ2013

10
私にとっては、ssh-agent.exe実際には\Git\usr\binフォルダにありました。
ベンワイルド

53

あなたのise $profileパスを汚染することなくこのPoshGitの問題を修正するために、プロファイル(タイプ)の上部に2行を追加できます。次に、実行. $profileしてプロファイルをリロードします。

32ビットgitの場合

Set-Alias ssh-agent "${env:ProgramFiles(x86)}\git\bin\ssh-agent.exe"
Set-Alias ssh-add "${env:ProgramFiles(x86)}\git\bin\ssh-add.exe"

64ビットgitの場合

Set-Alias ssh-agent "$env:ProgramFiles\git\usr\bin\ssh-agent.exe"
Set-Alias ssh-add "$env:ProgramFiles\git\usr\bin\ssh-add.exe"

3
. $profileプロファイルをリロードするために実行することを忘れないでください
northben '06 / 09/14

2
New-Aliasを使用すると、を実行しようとしたときに問題が発生しました。$ profileを複数回(他の変更の場合)。代わりにSet-Aliasを使用してください。
ランドールボルク14

1
@RandallBorckと@northbenに感謝します!提案が組み込まれました。
ブライナリー2014

3
64ビットのgit 2.5(昨日リリースされた)の登場により、これらのエイリアスは${env:ProgramFiles}\git\usr\bin\、64ビットシステムの代わりに指すように更新する必要があります。
チェスターハスク2015

これは受け入れられる答えになるはずです。誰も彼らの道を汚したくありません。
jebar8

17

posh-gitを使用していてこの警告が表示されている場合は、次の行にコメント(「#」記号を追加)することで警告をオフにすることができます。

Start-SshAgent -Quiet

ファイル内

Documents\WindowsPowerShell\Modules\posh-git\profile.example.ps1

5
追加のボーナスとして、SSHサポートが不要/必要で、ssh-agent.exe PATH修正を追加してもpowershellの起動が非常に遅い場合、この行をコメントアウトすると、起動が大幅に高速化します。
MechEthan 2013年

17

私はそれを考え出した。GIT_SSHを指すようにマシンの環境変数を設定する必要がありますplink.exe。これは、TortoiseHg / TortoiseGit / Git Extensionsでインストールされたものか、Putty Download Pageからダウンロードできますが、同じシステム全体で使用するようにしてください。Windowsセッションからログアウトして、この変数がすべてのExplorerインスタンスとコマンドウィンドウに設定されていることを確認するのが最善です。


無駄な45分後、PowershellのGitでPageantをSSHエージェントとして使用しない問題を修正したのはこれだけです。のGIT_SSH値でのユーザー環境変数を作成しただけですC:\Program Files (x86)\PuTTY\plink.exe。ありがとう。
Phil Ricketts

3

指定したキーでssh-agentを実行するには、次のコードを書きました。

$gitexepath = cmd /c where git
$gitbindir = Join-Path $gitexepath "..\..\bin"
$sshagentpath = Join-Path $gitbindir "ssh-agent.exe"
$sshaddpath = Join-Path $gitbindir "ssh-add.exe"
$keypath = "...key path...":
$sshagentres = cmd /c $sshagentpath 
$env:SSH_AUTH_SOCK = [System.Text.RegularExpressions.Regex]::Match($sshagentres, "(?<=SSH_AUTH_SOCK=).+?(?=;)").Value
$env:SSH_AGENT_PID = [System.Text.RegularExpressions.Regex]::Match($sshagentres, "(?<=SSH_AGENT_PID=).+?(?=;)").Value
cmd /c $sshaddpath $keypath

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.