Git ใน Powershell พูดว่า 'ไม่พบ ssh-agent'


97

ฉันติดตั้งคอมไพล์แล้วและใช้งานได้ดีในพรอมต์คำสั่ง แต่เมื่อฉันเปิดพาวเวอร์เชลล์มันจะเตือนฉัน:

WARNING: Could not find ssh-agent

ฉันมีการประกวดรันและโหลดด้วยคีย์ส่วนตัวของฉัน สิ่งนี้ใช้ได้กับเครื่องมือ gui ทั้งหมดและพรอมต์คำสั่ง แต่ใช้ไม่ได้ใน Powershell

เกิดอะไรขึ้น?


1
อาจ%PATH%แตกต่างกันด้วยเหตุผลบางประการ?
Jonas Heidelberg


1
ลิงก์ของ @ rohancragg กล่าวว่า add: $env:path += ";" + (Get-Item "Env:ProgramFiles(x86)").Value + "\Git\bin"ที่ด้านบนของไฟล์โปรไฟล์ของคุณ (ใช้คำสั่ง PS ise $PROFILEเพื่อเปิดโปรไฟล์เพื่อแก้ไข)
Toby

ขออภัยที่ไม่ได้อธิบาย - haacked กล่าวว่า: "ไม่พบไฟล์ปฏิบัติการ" ssh-agent.exe "ไฟล์นั้นอยู่ใน C: \ Program Files (x86) \ Git \ bin แต่โฟลเดอร์นั้นไม่ได้ทำงานโดยอัตโนมัติ เพิ่มไปยัง PATH ของคุณโดย msysgit "
rohancragg

ฉันขอแนะนำให้คำตอบนี้ดีกว่าสำหรับคำแนะนำในโพสต์ที่ถูกแฮ็ก:
rohancragg

คำตอบ:


138

สำหรับผู้ที่ต้องการคำอธิบายโดยละเอียดโปรดอ่านบทความในบล็อกนี้ ด้านล่างนี้เป็นคำพูดจากบล็อกโพสต์ ในที่สุดssh-agent.exeความต้องการที่จะอยู่ในเส้นทางหรือแก้ไขด้วยวิธีอื่น

แก้ไข: ดูเหมือนว่าคนส่วนใหญ่ไม่สนใจอ่านบล็อกที่เชื่อมโยงและสารสกัดดั้งเดิมไม่ได้อ้างถึงโซลูชันฉบับเต็มดังนั้นฉันจึงขยายคำพูดจากบล็อกด้านล่าง

มีหลายวิธีในการแก้ไขข้อผิดพลาดโดยพิจารณาจากการชอบคำตอบอื่น ๆ ทั้งหมด หนึ่งที่รู้จักกันในการทำงานมีการระบุไว้ด้านล่าง สแกนดูว่าคำตอบอื่น ๆ อาจเหมาะกับคุณมากกว่า

เมื่อฉันรีสตาร์ทพรอมต์ PowerShell มันบอกฉันว่าไม่สามารถเริ่ม SSH Agent ได้

ปรากฎว่าไม่พบไฟล์ปฏิบัติการ“ ssh-agent.exe” ไฟล์นั้นอยู่ใน C: \ Program Files (x86) \ Git \ bin แต่โฟลเดอร์นั้นจะไม่ถูกเพิ่มลงใน PATH โดยอัตโนมัติโดย msysgit

หากคุณไม่ต้องการเพิ่มเส้นทางนี้ใน PATH ระบบของคุณคุณสามารถอัปเดตสคริปต์โปรไฟล์ PowerShell ของคุณเพื่อให้ใช้ได้กับเซสชัน PowerShell ของคุณเท่านั้น นี่คือการเปลี่ยนแปลงที่ฉันทำ

$ env: path + = ";" + (รับรายการ "Env: ProgramFiles (x86)") ค่า + "\ Git \ bin"

บนเครื่องของฉันที่สคริปต์อยู่ที่: C: \ Users \ Haacked \ Documents \ WindowsPowerShell \ Microsoft.Powershell_profile.ps1


2
นี่ควรเป็นคำตอบจริงๆ!
caveman_dick

นี่คือคำตอบที่ใช่ คำตอบที่ยอมรับถือว่าติดตั้ง TortoiseGit หรือ TortoiseHg ตามที่คำตอบนี้ชี้ให้เห็นสิ่งที่คุณต้องใช้ในการแก้ไขปัญหาคือ Msysgit
Carl

3
Ugggh เพิ่มไดเร็กทอรีนี้ใน PATH ทำให้ฉันรู้สึกไม่สบายใจ .. มันมี. exes ทุกประเภทที่มีชื่อสามัญที่ขัดแย้งกับคำสั่งของ Windows หวังว่ามันจะไม่กัดตูดฉันสักวัน
Salman von Abbas

4
@SalmanPK: มันไม่เพียง แต่ทำให้ฉันอึดอัดเท่านั้น แต่ยังทำให้ผู้ดูแล Git หมดกำลังใจอย่างชัดเจนด้วย และในกรณีของฉันมันทำลายบรรทัดคำสั่ง PowerShell
skolima

10
สำหรับฉันssh-agent.exeจริงๆแล้วอยู่ใน\Git\usr\binโฟลเดอร์
Ben Wilde

53

คุณสามารถเพิ่มสองบรรทัดที่ด้านบนของโปรไฟล์ของคุณ (ประเภทise $profile) เพื่อแก้ไขปัญหา PoshGit นี้โดยไม่ทำให้เส้นทางของคุณเสียหาย จากนั้นเรียกใช้. $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-bit 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

2
การใช้ New-Alias ​​ทำให้เกิดปัญหาเมื่อฉันพยายามเรียกใช้ $ profile หลายครั้ง (สำหรับการเปลี่ยนแปลงอื่น ๆ ) ใช้ Set-Alias ​​แทนและได้ผลดีกว่ามาก
Randall Borck

1
ขอบคุณ @RandallBorck และ @northben! รวมข้อเสนอแนะ
brianary

3
ด้วยการถือกำเนิดของ 64-bit git 2.5 (เปิดตัวเมื่อวานนี้) นามแฝงเหล่านี้จะต้องได้รับการอัปเดตให้ชี้ไปที่${env:ProgramFiles}\git\usr\bin\ระบบ 64 บิตแทน
Chester Husk

นี่ควรเป็นคำตอบที่ได้รับการยอมรับ ไม่มีใครอยากบดบังเส้นทางของพวกเขา
jebar8

17

หากคุณใช้ posh-git และรับคำเตือนนี้คุณสามารถปิดได้โดยการแสดงความคิดเห็น (เพิ่มเครื่องหมาย '#' ในบรรทัดต่อไปนี้

Start-SshAgent -Quiet

ในไฟล์

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

5
เป็นโบนัสเพิ่มเติมหากคุณไม่ต้องการ / ต้องการการสนับสนุน SSH และคุณมีการเปิดตัว powershell ที่ช้ามากแม้ว่าจะเพิ่มการแก้ไข ssh-agent.exe PATH การแสดงความคิดเห็นในบรรทัดนี้จะช่วยเพิ่มความเร็วในการเปิดตัวได้มาก
MechEthan

17

ฉันคิดออกแล้ว คุณต้องกำหนดตัวแปรสภาพแวดล้อมในเครื่องของคุณจะชี้ไปที่GIT_SSH plink.exeอาจเป็นระบบที่ติดตั้งกับ TortoiseHg / TortoiseGit / Git Extensionsหรือคุณสามารถดาวน์โหลดได้จากPutty Download Pageแต่ตรวจสอบให้แน่ใจว่าคุณใช้ระบบเดียวกันทั้งระบบ ดีที่สุดที่จะออกจากเซสชัน Windows ของคุณเพื่อให้แน่ใจว่าตัวแปรนี้ถูกตั้งค่าสำหรับอินสแตนซ์ Explorer และหน้าต่างคำสั่งทั้งหมด


หลังจากเสีย 45 นาทีนี้เป็นเพียงสิ่งเดียวที่ได้รับการแก้ไขปัญหาของฉันกับ Git ใน Powershell ไม่ได้ใช้การประกวดเป็นตัวแทนของ ฉันเพิ่งสร้างตัวแปรสภาพแวดล้อมของผู้ใช้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.