पॉवर्सशेल में कहावत 'ssh-Agent को नहीं मिल सका'


97

मैंने git इंस्टॉल किया है और यह कमांड प्रॉम्प्ट में बहुत अच्छा काम करता है, लेकिन जब मैं इसे पावरशेल खोलता हूं तो यह मुझे चेतावनी देता है:

WARNING: Could not find ssh-agent

मेरे पास मेरी निजी कुंजी के साथ चलने और लोड होने की संभावना है। यह सभी gui टूल्स और कमांड प्रॉम्प्ट में काम करता है लेकिन Powershell में नहीं।

क्या चल रहा है?


1
कर सके %PATH%किसी कारण के लिए अलग अलग हो सकता है?
जोनास हीडलबर्ग


1
@ रोहनक्रैग का लिंक अनिवार्य रूप से कहता है: $env:path += ";" + (Get-Item "Env:ProgramFiles(x86)").Value + "\Git\bin"अपनी प्रोफ़ाइल फ़ाइल के शीर्ष पर : संपादन के लिए प्रोफ़ाइल ise $PROFILEको खोलने के लिए PS कमांड का उपयोग करें )
Toby

समझाने के लिए खेद नहीं है - हेकड कहते हैं: "यह" ssh-Agent.exe "निष्पादन योग्य नहीं पाया जा सका। वह फ़ाइल C: \ Program Files (x86) \ Git \ bin में स्थित है। लेकिन वह फ़ोल्डर अपने आप नहीं है। msysgit द्वारा आपके PATH में जोड़ा गया "
rohancragg

मेरा सुझाव है कि यह जवाब अब हेक पोस्ट में सलाह के लिए बेहतर होगा:
रोहनक्रैग

जवाबों:


137

विस्तृत विवरण की तलाश करने वालों के लिए इस ब्लॉग पोस्ट का एक पाठ है । नीचे ब्लॉग पोस्ट का एक उद्धरण है। अंततः ssh-agent.exeरास्ते में होने की जरूरत है, या किसी और तरीके से हल किया गया है।

संपादित करें: ऐसा प्रतीत होता है कि अधिकांश लोग लिंक किए गए ब्लॉग को पढ़ने से परेशान नहीं हैं और मूल अर्क ने पूर्ण समाधान को उद्धृत नहीं किया है, इसलिए मैंने नीचे दिए गए ब्लॉग से उद्धरण का विस्तार किया है।

अन्य सभी उत्तरों को पसंद करने के आधार पर, त्रुटि को हल करने के कई तरीके हैं। एक काम के लिए जाना जाता है नीचे उद्धृत किया गया है। स्कैन हालांकि अन्य उत्तर वे आपके लिए अधिक उपयुक्त हो सकते हैं।

जब मैंने अपना PowerShell प्रॉम्प्ट फिर से शुरू किया, तो उसने मुझे बताया कि यह SSH एजेंट शुरू नहीं कर सकता है।

यह पता चला कि यह "ssh-agent.exe" निष्पादन योग्य नहीं था। वह फ़ाइल C: \ Program Files (x86) \ Git \ bin में स्थित है। लेकिन वह फ़ोल्डर स्वचालित रूप से msysgit द्वारा आपके पेट में नहीं जोड़ा जाता है।

यदि आप इस पथ को अपने सिस्टम पथ में जोड़ना नहीं चाहते हैं, तो आप अपनी PowerShell प्रोफ़ाइल स्क्रिप्ट को अपडेट कर सकते हैं, इसलिए यह केवल आपके PowerShell सत्र पर लागू होता है। यहां मैंने जो बदलाव किया है।

$ env: path + = ";; + (Get-Item "Env: ProgramFiles (x86)")। मान + "\ Git \ bin"

मेरी मशीन पर वह स्क्रिप्ट है: C: \ Users \ Haacked \ Documents \ WindowsPowerShell \ Microsoft.Powershell_profile.ps1


2
यह वास्तव में जवाब होना चाहिए!
caveman_dick

यह सही जवाब है। स्वीकृत उत्तर मानता है कि TortoiseGit या TortoiseHg स्थापित है। जैसा कि यह उत्तर बताता है, आपको समस्या को ठीक करने की आवश्यकता है।
कार्ल

3
UATgh ने PATH में इस डायरेक्टरी को जोड़ते हुए मुझे असहज बना दिया है। इसमें सभी प्रकार के .exes हैं जिनमें जेनेरिक नाम विंडोज के कमांड के साथ परस्पर विरोधी हैं। आशा है कि यह मुझे किसी दिन गधे में काटता नहीं है।
सलमान वॉन अब्बास

4
@ सलमानपाक: यह न केवल मुझे असहज बनाता है, यह स्पष्ट रूप से गिट अनुचर भी हतोत्साहित करता है। और मेरे मामले में, इसने पॉवरशेल कमांड लाइन को तोड़ दिया।
skolima

10
मेरे लिए, ssh-agent.exeवास्तव में \Git\usr\binफ़ोल्डर में स्थित था ।
बेन वाइल्ड

53

आप ise $profileअपने पथ को प्रदूषित किए बिना इस पॉशगिट समस्या को ठीक करने के लिए अपने प्रोफ़ाइल के शीर्ष (प्रकार ) में दो पंक्तियाँ जोड़ सकते हैं । फिर . $profileअपने प्रोफ़ाइल को पुनः लोड करने के लिए चलाएँ ।

32-बिट गिट के लिए

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-बिट गिट के लिए

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अपने प्रोफाइल को फिर से लोड करने के लिए दौड़ना न भूलें
उत्तरबेन

2
जब मैंने चलाने की कोशिश की तो न्यू-एलियास का उपयोग करने से समस्या हुई। $ प्रोफ़ाइल कई बार (अन्य परिवर्तनों के लिए)। इसके बजाय सेट-एलियास का उपयोग करें, और यह बहुत बेहतर काम करता है।
रान्डेल बोरक

1
धन्यवाद @RandallBorck और @northben! सुझाव शामिल किए गए।
ब्रायनरी

3
64-बिट git 2.5 (कल जारी) के आगमन के साथ, इन एलियास को ${env:ProgramFiles}\git\usr\bin\64-बिट सिस्टम के लिए इंगित करने के लिए अद्यतन करने की आवश्यकता होगी ।
चेस्टर हस्क

यह स्वीकृत उत्तर होना चाहिए। कोई भी उनकी राह को नहीं तोड़ना चाहता।
jebar8

17

यदि आप पॉश-गिट का उपयोग कर रहे हैं और इस चेतावनी को प्राप्त कर रहे हैं, तो आप इसे टिप्पणी द्वारा बंद कर सकते हैं (निम्नलिखित में '#' चिन्ह जोड़कर)

Start-SshAgent -Quiet

फ़ाइल में

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

5
एक अतिरिक्त बोनस के रूप में, यदि आपको SSH समर्थन की आवश्यकता नहीं है / चाहते हैं, और आप ssh-agent.exe PATH फिक्स को जोड़ने के साथ वास्तव में धीमी गति से लॉन्च कर रहे हैं, तो इस लाइन को टिप्पणी करते हुए लॉन्च को एक टन तक गति प्रदान करता है।
मेकथन

17

मैं यह समझ गया। आपको GIT_SSHइंगित करने के लिए अपनी मशीन पर पर्यावरण चर सेट करने की आवश्यकता है plink.exe। यह TortoiseHg / TortoiseGit / Git एक्सटेंशन के साथ स्थापित किया जा सकता है या आप इसे Putty डाउनलोड पृष्ठ से डाउनलोड कर सकते हैं , लेकिन यह सुनिश्चित करें कि आप उसी एक सिस्टम वाइड का उपयोग करें। यह सुनिश्चित करने के लिए कि यह चर सभी एक्सप्लोरर इंस्टेंस और कमांड विंडो के लिए सेट हो जाता है, अपने विंडोज सत्र से लॉग आउट करें।


45 व्यर्थ मिनटों के बाद, यह एकमात्र ऐसी चीज है जिसने पॉवर्स में Git के साथ मेरे मुद्दों को तय किया है जो Pageant को अपने एसआर एजेंट के रूप में उपयोग नहीं कर रहा है । मैंने बस इसके लिए GIT_SSHएक मूल्य के साथ एक उपयोगकर्ता पर्यावरण चर बनाया है C:\Program Files (x86)\PuTTY\plink.exe। धन्यवाद।
फिल रिकेट्स

3

निर्दिष्ट कुंजी के साथ ssh- एजेंट चलाने के लिए मैंने यह कोड लिखा है:

$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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.